2011-12-06 47 views
-1

我正在使用此查询,但出现错误vdagbk.bedragvdagbk.reden表列在查询中不可查表

问题是,如果我在第二个SELECT中输入,结果肯定会是错误的,因为表中的double数据会将结果总结多次。

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这里:

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

,所以你还需要使用别名SUM()条款这里:

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

更改为:

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

,它应该工作。