所以我有这个查询,我必须更新一个表。如果表中存在该值,则它应该仅更新表的一列,如果它不存在则应该插入到列中。
IF EXISTS (SELECT d1.IDComanda, d1.IDComandaPozitie, sum(d1.Cantitate) FROM GEMsc2Pozitii as d1
WHERE d1.IDComanda IS NOT NULL and d1.IDComandaPozitie is not null
GROUP BY d1.IDComanda , d1.IDComandaPozitie
)
BEGIN
UPDATE #ComenziCuPozActive SET CantInchisa = CantInchisa + (SELECT sum(d1.Cantitate) from GEMsc2Pozitii as d1
WHERE d1.IDComanda IS NOT NULL and d1.IDComandaPozitie is not null
GROUP BY d1.IDComanda , d1.IDComandaPozitie )
END
ELSE
BEGIN
INSERT INTO #ComenziCuPozActive
SELECT d1.IDComanda, d1.IDComandaPozitie, sum(d1.Cantitate) FROM GEMsc2Pozitii as d1
GROUP BY d1.IDComanda , d1.IDComandaPozitie
END
问题是SET CantInchisa不能采用多个值,这是逻辑。如何根据条件对2个列进行求和。
前:
#ComenziCuPozActive a
IDComanda IDPozitie CantInchisa
1 1 2
1 2 1
2 2 4
GEMsc2Pozitii b
IDComanda IDComandaPozitie Cantitate
1 1 2
1 2 1
2 2 4
WHERE.IDComanda = b.IDComanda和a.IDComandaPozitie = b.IDPozitie我想总结一下cantitate列。
RESULT
#ComenziCuPozActive a
IDComanda IDPozitie CantInchisa
1 1 4
1 2 2
2 2 8
答案 0 :(得分:0)
答案是:
UPDATE #ComenziCuPozActive SET CantInchisa = CantInchisa + d1.Cantitate from GEMsc3Pozitii d1 JOIN #ComenziCuPozActive x on d1.IDComanda = x.IDComanda and d1.IDComandaPozitie = x.IDPozitie
如果有人想知道。