SQL, SSRS, SQL SERVER, - PullRequest
       10

SQL, SSRS, SQL SERVER,

0 голосов
/ 03 сентября 2018

У меня есть таблица на основе транзакций в SQL, из которой я создаю отчет SSRS. У меня есть фильтр на основе дат транзакции, как показано ниже:

Label 7-13 value 1
Label 14-28 value 2
Label 7-28 value 3

Если пользователь выбирает 1, тогда мне нужно показать все транзакции, которые происходят между 7-13 днями с сегодняшнего дня. И то же самое для других. Посоветуйте, пожалуйста, как мне это сделать на уровне запроса.

1 Ответ

0 голосов
/ 03 сентября 2018

Вот подход, который включает образцы данных:

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:

WHERE (@value = 1 AND [do this if @value = 1])
OR (@value = 2 AND [do this if @value = 2])
etc.
...