2011-12-06 12 views
-1

私はこのクエリを使用していますが、エラーvdagbk.bedragvdagbk.redenが表示されます。クエリでテーブルの列が空でない

問題点は、2番目のSELECTに入力すると、テーブルの2倍のデータが原因で何度も結果が合計されるため、結果が間違っている可能性が高いことです。

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 

と動作するはずです。

関連する問題