2011-12-06 4 views
-1

이 쿼리를 사용하고 있지만 vdagbk.bedragvdagbk.reden 오류가 발생합니다.쿼리에서 테이블 열을 바꿀 수 없음

문제는 두 번째 SELECT에 넣으면 테이블의 이중 데이터로 인해 결과가 여러 번 합계되기 때문에 결과가 틀린 것입니다.

SELECT TOP (100) PERCENT 
    SUM(P.bedrag) AS ex, 
    C.dosno, 
    C.dosnm, 
    SUM(P.betaald) AS TotBetaald, 
    SUM(CASE vdagbk.reden WHEN 'H' THEN vdagbk.bedrag END) AS Expr1 
FROM   
    dbo.verkopen AS P 
INNER JOIN 
    (SELECT DISTINCT 
     dbo.doss.dosno, dbo.doss.dosnm, dbo.verkopen.ino 
    FROM dbo.verkopen 
    INNER JOIN dbo.doss ON dbo.verkopen.ino = dbo.doss.ino 
    INNER JOIN dbo.vdagbk ON dbo.verkopen.ino = dbo.vdagbk.ino 
    WHERE  
     (dbo.doss.uitvoerder LIKE 'LL') 
     AND (dbo.doss.dosno LIKE '101520') 
    GROUP BY 
     dbo.doss.dosno, dbo.doss.dosnm, dbo.verkopen.ino) AS C ON C.ino = P.ino 
INNER JOIN 
    dbo.vdagbk AS vdagbk_1 ON P.ino = vdagbk_1.ino 
GROUP BY 
    C.dosno, C.dosnm 

이 쿼리를 어떻게 만들 수 있습니까?

답변

0

현재 테이블 dbo.vdagbk에게 별명 vdagbk_1을 제공하고 있습니다 :

SUM(CASE vdagbk.reden WHEN 'H' THEN vdagbk.bedrag END) AS Expr1 

변경이에 :

INNER JOIN 
    dbo.vdagbk AS vdagbk_1 ON P.ino = vdagbk_1.ino 

그래서 당신은 또한 사용할 필요가 여기 SUM() 절에 별칭한다 :

SUM(CASE vdagbk_1.reden WHEN 'H' THEN vdagbk_1.bedrag END) AS Expr1 

이고 작동해야합니다.

관련 문제