2014-04-02 4 views
0

그래서이 테이블을 업데이트해야하는 쿼리가 있습니다. 테이블에 값이있는 경우 테이블의 한 열만 업데이트해야합니다. 존재하지 않으면 열에 삽입해야합니다.조건에 따라 다른 열의 값이있는 열의 SQL 합계 값

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 개의 열을 더할 수 있습니까?

예 : a.IDComanda = b.IDComanda 및 a.IDComandaPozitie = b.IDPozitie 내가 cantitate 열을 합계를

#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 

.

RESULT 

    #ComenziCuPozActive a 
    IDComanda IDPozitie  CantInchisa 
    1   1    4 
    1   2     2 
    2   2    8 
+0

UPDATE 문의 WHERE 절에 WHERE EXISTS (...)를 사용하는 것이 좋습니다. –

+0

나는 그것을 가능하게 만들었습니다. – CiucaS

답변

0

답은 GEMsc3Pozitii의 D1 FROM

SET UPDATE #ComenziCuPozActive CantInchisa = CantInchisa + d1.Cantitate가 d1.IDComanda = x.IDComanda 및 d1.IDComandaPozitie = x.IDPozitie

에 #ComenziCuPozActive X 가입

누구라도 궁금 할 경우.

관련 문제