首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL、SSRS、SQL SERVER

SQL、SSRS、SQL SERVER
EN

Stack Overflow用户
提问于 2018-09-03 14:48:02
回答 1查看 47关注 0票数 0

我在SQL中有一个基于事务的表,我正在从中创建一个SSRS报告。我有一个基于交易日期的过滤器,如下所示:

代码语言:javascript
复制
Label 7-13 value 1
Label 14-28 value 2
Label 7-28 value 3

如果用户选择1,那么我需要显示从今天起7-13天内发生的所有交易。对其他人也是如此。请告诉我如何在查询级别做到这一点。

EN

回答 1

Stack Overflow用户

发布于 2018-09-03 15:01:54

下面是一种包含示例数据的方法:

代码语言:javascript
复制
declare @value int
select @value = 1

;with cte as
(
    select cast(getdate() as date) dt
    union all
    select dateadd(day, -1, dt)
    from cte
    where dt > getdate() - 30
)
select * 
from cte
where (@value = 1 and dt between DATEADD(day, -13, cast(getdate() as date)) and DATEADD(day, -7, cast(getdate() as date)))
or (@value = 2 and dt between DATEADD(day, -28, cast(getdate() as date)) and DATEADD(day, -14, cast(getdate() as date)))
or (@value = 3 and dt between DATEADD(day, -28, cast(getdate() as date)) and DATEADD(day, -7, cast(getdate() as date)))

关键在于where子句:

代码语言:javascript
复制
WHERE (@value = 1 AND [do this if @value = 1])
OR (@value = 2 AND [do this if @value = 2])
etc.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52144449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档