Службы отчетов SQL Server не передают правильный параметр из хранимой процедуры SQL - PullRequest
0 голосов
/ 19 июня 2019

У меня есть хранимая процедура SQL, которая вызывает самую последнюю дату из определенного цикла. Эта дата включает в себя несколько точек данных, которые вводятся в отчет. Когда я выполняю только оператор SELECT, он извлекает нужную мне дату. В SSRS он тянет со второго по последнее время ... У меня есть ТОП 1, чтобы выбрать самое последнее вместе с DESC. Мне было интересно, если у меня есть проблемы с моими параметрами в SSRS. Отчет настроен как 2 подотчета. Первый подотчет - это просто обзорная страница, а второй - фактический отчет, содержащий все данные с датами начала и окончания. @ Phase1Start и @ Phase1End - мои параметры, передаваемые в подотчет, который содержит все точки данных. Кроме того, причина, по которой у меня нет одинарных кавычек вокруг 1, заключается в том, что CycleComplete немного. Любые решения?

Я уже пробовал:

-Изменение типов даты от даты / времени до текста -Включая одинарные кавычки вокруг 1

Вот моя хранимая процедура:

DECLARE @Phase1Start as datetime
DECLARE @Phase1End as datetime

  SELECT
        @Phase1Start = (SELECT TOP 1 [CycleStartedOn] FROM [dbo].[IPEC_P_CIP_TKB_PREFLT] WHERE [CycleComplete] = 1 ORDER BY [CycleStartedOn] DESC) 
        ,@Phase1End = (SELECT TOP 1 [CycleEndedOn] FROM [dbo].[IPEC_P_CIP_TKB_PREFLT] WHERE [CycleComplete] = 1 ORDER BY [CycleStartedOn] DESC) 

  DECLARE @tblReports TABLE
(    
    Phase1Start datetime
    ,Phase1End datetime
    )

    INSERT INTO @tblReports
(    
    Phase1Start 
    ,Phase1End 
    )

Values
(   
    @Phase1Start
    ,@Phase1End
    )

SELECT * FROM @tblReports

END

Хранимая процедура компилируется правильно и дает мне время начала и окончания, которое я хочу. Проблема в том, что SSRS не извлекает правильную дату из хранимой процедуры, хотя у меня есть @ Phase1Start и Phase1End, поскольку мои параметры передаются в подотчет, который содержит все данные.

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

Вы можете использовать группу по

SELECT  @Phase1Start = MAX([CycleStartedOn] ) ,
        @Phase1End = MAX([CycleEndedOn])
FROM        [dbo].[IPEC_P_CIP_TKB_PREFLT] 
WHERE    [CycleComplete] = 1 
0 голосов
/ 19 июня 2019

Возможно ли, что наш первый подзапрос и второй подзапрос возвращают разные записи? Возможно, это может помочь:

SELECT Top(1) @Phase1Start = [CycleStartedOn], @Phase1End = [CycleEndedOn] FROM [dbo].[IPEC_P_CIP_TKB_PREFLT] WHERE [CycleComplete] = 1 ORDER BY [CycleStartedOn] DESC
...