2013-01-23 139 views
0

我有以下SQL查询SQL查询:无法在子执行集合函数的查询

SELECT 
    [Date], 
    DATENAME(dw,[Date]) AS Day, 
    SUM(CASE WHEN ChargeCode IN (SELECT ChargeCode FROM tblChargeCodes WHERE Chargeable = 1) THEN Units ELSE 0 END) ChargeableTotal, 
    SUM(CASE WHEN ChargeCode IN (SELECT ChargeCode FROM tblChargeCodes WHERE Chargeable = 0) THEN Units ELSE 0 END) NotChargeableTotal, 
    SUM(Units) AS TotalUnits 
FROM 
    tblTimesheetEntries 
WHERE 
    UserID = 'PJW' 
    AND Date >= '2013-01-01' 
GROUP BY 
    [Date] 
ORDER BY 
    [Date] DESC; 

但我得到的错误信息:

不能对包含的表达式执行聚合函数聚合或子查询。

因为我在Case Else Summation中使用子查询。

即使Chargeable字段与所有其他信息不在一个表中,我如何修改我的查询以获得2 x Summa [Units] one对于Chargeable = true,另一个对于Chargeable = false。这两个表通过ChargeCode链接,它出现在tblTimesheetEntries和tblChargeCodes中。

回答

5

你试过在chargeCode连接表:

SELECT e.[Date], 
    DATENAME(dw,e.[Date]) AS Day, 
    SUM(CASE WHEN c.Chargeable = 1 THEN e.Units ELSE 0 END) ChargeableTotal, 
    SUM(CASE WHEN c.Chargeable = 0 THEN e.Units ELSE 0 END) NotChargeableTotal, 
    SUM(e.Units) AS TotalUnits 
FROM tblTimesheetEntries e 
LEFT JOIN tblChargeCodes c 
    on e.ChargeCode = c.ChargeCode 
WHERE e.UserID = 'PJW' 
    AND e.Date >= '2013-01-01' 
GROUP BY e.[Date] 
ORDER BY e.[Date] DESC; 
+0

+1。 。 。打我吧;) –

+0

再次感谢你Bluefeet :) – PJW

+0

@PJW欢迎您! :) – Taryn