Próbuję uzyskać stwierdzenie aktualizacji, aby funkcjonować, jak potrzebuję. Próbowałem następujących następujących połączeń Wewnętrznych / zewnętrznych / prawych. Nadal masz rekordy, które nie są aktualizowane na stole UserType2, mimo że posiadania wartości dziecka UserType3. Czy idę na to właściwy sposób? Usertype2 i usertype3 zawsze będą mieć wartość nadrzędną matową, materia jest zawsze rodzicielska, a usertype2 i usertype3 są rekordami dziecka.

UPDATE f
SET f.USR1_05_01 = expTot
FROM lntmuid.usertype2 f JOIN
(
    SELECT MAX(e.mat_id) AS matId, SUM(CONVERT(money, e.USR1_02_08)) AS expTot 
    FROM TimeMatters.lntmuid.usertype3 e 
    GROUP BY mat_id
)
e ON f.mat_id = e.matId
WHERE f.mat_id = e.matId
0
bumble_bee_tuna 15 wrzesień 2020, 21:08

1 odpowiedź

Najlepsza odpowiedź

Możesz napisać zapytanie jako:

UPDATE f
    SET f.USR1_05_01 = e.expTot
FROM lntmuid.usertype2 f JOIN
     (SELECT e.mat_id, SUM(CONVERT(money, e.USR1_02_08)) AS expTot 
      FROM TimeMatters.lntmuid.usertype3 e 
      GROUP BY mat_id
     ) e
     ON f.mat_id = e.matId;

Jednak twoje oryginalne zapytanie powinno zrobić to, co chcesz.

1
Gordon Linoff 15 wrzesień 2020, 18:10