【问题标题】:SQL Query: Including Two Sums based on different criteria from the same tableSQL 查询:包括来自同一个表的基于不同条件的两个总和
【发布时间】:2013-01-23 21:52:19
【问题描述】:

我目前有以下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;

返回给定用户和日期的总 [单位]。

但是,我想根据新标准生成两个单独的总单位,即 [单位] 是否“收费”。 tblTimeSheets 中有一个名为 Chargeable 的字段,它是一个布尔值(true 表示可收费,false 表示不收费)。我如何将其合并为每种类型的单位显示两个总和?

【问题讨论】:

    标签: sql


    【解决方案1】:

    您可以使用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;
    

    【讨论】:

    • 另外,你可以跳过 else,因为如果没有指定它将默认为 null:case when Chargeable = 1 then Units end
    • 没错,不过我总是包含它。 :)
    猜你喜欢
    • 2015-12-02
    • 2021-06-25
    • 2010-12-19
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多