SSRS SQL查询显示非现有记录的零值

时间:2016-08-19 02:59:10

标签: sql ssrs-2012

我使用以下查询来提取过去11/12个月的数据

SELECT [ID]
      ,[Name]  
      ,[Amount]     
FROM DB1 
WHERE [Period] BETWEEN @FromMonth AND @ToMonth  
      AND [Desc] = 'XYZ'  

我想要实现的是,某些ID在某些时段(月)没有任何数量的记录。目前,查询不会为DB中没有记录的名称和月份组合返回任何内容。如果ID在db中具有特定数量和日期,则仅显示结果。但是,我想要的是,如果一个ID没有一个月的金额,那么它应该显示该月的金额。

@FromMonth@ToMonth是传递给报告的参数。我知道我可以通过旋转实现这一目标,但我不想这样做。任何提示?

1 个答案:

答案 0 :(得分:0)

如果我不得不根据你的标题猜测,也许这就是你正在寻找的case声明:

select id, name, 
    case when Period between @FromMonth and ToMonth and [Desc] = 'XYZ' 
         then amount 
         else 0 
    end as amount
from db1

这将返回ids的所有namesdb1,但仅包含符合您之前amount条件的记录的where

顺便说一句,我通常建议您避免使用reserved words作为列名(desc)。