2013-01-23 39 views
2

目前,我有以下SQL查询SQL查询:包括基于不同的标准从同一个表

SELECT [Date], DATENAME(dw,[Date]) AS Day, SUM(Units) AS TotalUnits 
FROM tblTimesheetEntries 
WHERE UserID = 'PJW' 
AND Date >= '2013-01-01' 
GROUP BY [Date] 
ORDER BY [Date] DESC; 

它返回共[单位]给定用户和日期两个总和。

但是我想根据一个新的标准来生成两个独立的总单位,即[Units]是否是'Chargeable or Not'。 tblTimeSheets中有一个名为Chargeable的字段,它是一个布尔值(对于收费为true,对于不收费为false)。我如何结合这个来为每种类型的单位显示两个总和?

回答

7

您可以使用CASESUM()来计算单独总计:

SELECT [Date], 
    DATENAME(dw,[Date]) AS Day, 
    sum(case when Chargeable = 1 then Units else 0 end) ChargeableTotal, 
    sum(case when 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; 
+1

也,你可以跳过一样,因为它会默认为空,如果没有指定:'情况下,当可充电= 1个,那么单位结束' – paul

+0

诚然,我总是包括它。 :) – Taryn

+0

非常好 - 谢谢 – PJW