Sql server 将带有多个sum()语句的select语句配置为仅输出非零结果

Sql server 将带有多个sum()语句的select语句配置为仅输出非零结果,sql-server,reporting-services,Sql Server,Reporting Services,在SRSS中做一个饼图,我试图为它生成一个合适的sql查询。基本上,我试图分析一个只有上个月才打开的文件的表。有一个Date_Open字段可用于此场景: SELECT count(*) AS NoOfFiles, sum(CASE WHEN DATEPART(MONTH, Date_Opened) >= DATEPART(MONTH, DATEADD(m, 1, getdate())) AND DATEPART(Y

在SRSS中做一个饼图,我试图为它生成一个合适的sql查询。基本上,我试图分析一个只有上个月才打开的文件的表。有一个Date_Open字段可用于此场景:

SELECT count(*) AS NoOfFiles,
       sum(CASE
             WHEN DATEPART(MONTH, Date_Opened) >= DATEPART(MONTH, DATEADD(m, 1, getdate()))
                  AND DATEPART(YEAR, Date_Opened) >= DATEPART(YEAR, DATEADD(m, -1, getdate()))
                  AND Case_Category_ID = 225 THEN 1
             ELSE 0
           END) AS InDischargeLoan,
       sum(CASE
             WHEN DATEPART(MONTH, Date_Opened) >= DATEPART(MONTH, DATEADD(m, 1, getdate()))
                  AND DATEPART(YEAR, Date_Opened) >= DATEPART(YEAR, DATEADD(m, -1, getdate()))
                  AND Case_Category_ID = 226 THEN 1
             ELSE 0
           END) AS TechnicalDev,
FROM   dbo.Cases 
上面的查询将添加等于零的列。但我只想要非零列。我想
使用“having”或group by可能会起作用,但不确定如何使用这些命令

列是固定的。您不能从查询结果中动态删除列。我认为您必须使用循环创建一个临时表,然后执行我的选择?是的,您可以将
select
的结果放入一个临时表中,然后生成一个仅包含所需列的动态SQL查询。不知道SSRS是否真的强迫你这么做。