用于在Excel中复制SUMIF的SQL函数

时间:2017-06-15 06:45:40

标签: sql sql-server excel-formula sumifs

我是SQL Server 2012的新手,希望尽量减少Excel中的数据处理。

我有我的主数据集然后我想从这些数据中做一个SUMIF,并且只返回sumif不等于零的行。

我使用以下功能,它会在不同时间返回不同的结果。

错误的可能原因是某些行的AccID为空。

, main_data2 as 
(

    select
            md.*

    from main_data md
    left join
    (
            select 
                AccID
                ,sum(amount) as total_amount
            from main_data
            group by AccID
            having sum(amount) <> 0 

) md2 on md.AccID = md2.AccID

where md2.AccID is null

)

1 个答案:

答案 0 :(得分:0)

如果您想保留最终结果集中的所有帐户,那么LEFT JOIN似乎是合适的。您已经拥有的子查询会找到非零和的帐户。您可以将main_data连接到此子查询,然后可选地将每个记录标记为空,如果其相应的帐户总和为零。

SELECT
    md.*,
    CASE WHEN md2.AccID IS NULL THEN 'Empty' END AS label
FROM main_data md
LEFT JOIN
(
    SELECT AccID, SUM(amount) AS total_amount
    FROM main_data
    GROUP BY AccID
    HAVING SUM(amount) <> 0 
) md2
    ON md.AccID = md2.AccID