我使用以下查询来提取过去11/12个月的数据
SELECT [ID]
,[Name]
,[Amount]
FROM DB1
WHERE [Period] BETWEEN @FromMonth AND @ToMonth
AND [Desc] = 'XYZ'
我想要实现的是,某些ID在某些时段(月)没有任何数量的记录。目前,查询不会为DB中没有记录的名称和月份组合返回任何内容。如果ID在db中具有特定数量和日期,则仅显示结果。但是,我想要的是,如果一个ID没有一个月的金额,那么它应该显示该月的金额。
@FromMonth
和@ToMonth
是传递给报告的参数。我知道我可以通过旋转实现这一目标,但我不想这样做。任何提示?
答案 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
的所有names
和db1
,但仅包含符合您之前amount
条件的记录的where
。
顺便说一句,我通常建议您避免使用reserved words
作为列名(desc
)。