Может ли отчет SSRS содержать двойные параметры даты и времени? - PullRequest
0 голосов
/ 19 июня 2020

Можно ли иметь в отчете два параметра даты / времени?

У меня есть простой набор данных с предложением 'where':

where RequestSource in (@reqsource)
and EntryDay between @startdate and @finishdate
and EntryDay between @periodstart and @periodend

В отчете есть календарный параметр даты / времени (с использованием @startdate и @finishdate), и я хотел добавить второй (параметр из двух частей) (с использованием @periodstart и @periodend).

Набор данных для параметра @periodstart содержит:

select DATEADD(qq, DATEDIFF(qq, 0, GETDATE()) - 1, 0) as time, 'last quarter start' as timename
union all 
select DATEADD(qq, DATEDIFF(qq, 0, GETDATE()), 0) as time, 'this quarter start' as timename
union all
select DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) as time, 'this year start' as timename
union all
select DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) - 1, 0) as time, 'last year start' as timename

Параметр @periodend набора данных содержит:

select DATEADD(dd, -1, DATEADD(qq, DATEDIFF(qq, 0, GETDATE()), 0)) as time, 'last quarter end' as timename
union all
select DATEADD (dd, -1, DATEADD(qq, DATEDIFF(qq, 0, GETDATE()) +1, 0)) as time, 'this quarter end' as timename
union all
select DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) as time, 'this year end' as timename
union all
select DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), -1) as time, 'last year end' as timename

Можно ли иметь параметры @startdate и @finishdate равными нулю и использовать параметры @periodstart и @periodend, которые имеют предопределенные значения?

просмотр параметров отчета

1 Ответ

0 голосов
/ 23 июня 2020

Я не совсем уверен, в чем ваша проблема, вы спрашиваете, возможно ли иметь более одной даты начала и даты окончания?

Да, это так, вам просто нужно учесть это в своем наборе данных query.

Если я чего-то не упускаю, я бы сделал что-то вроде этого.

DECLARE @sDate datetime
DECLARE @eDate datetime

SET @sDate = ISNULL(@startdate, @periodstart)
SET @eDate = ISNULL(@finishdate, @periodend)

SELECT * 
    FROM myTable
    WHERE RequestSource IN (@reqsource)
        AND EntryDay BETWEEN @sDate AND @eDate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...