根据条件,来自列的SQL和值以及来自另一列的值

时间:2014-04-02 09:33:45

标签: sql sql-server set sql-update sum

所以我有这个查询,我必须更新一个表。如果表中存在该值,则它应该仅更新表的一列,如果它不存在则应该插入到列中。

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  

1 个答案:

答案 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

如果有人想知道。