Хранимая процедура с Pivot возвращает не структуру результата, а нулевое значение - PullRequest
0 голосов
/ 20 апреля 2019

MyActualresult Я пытаюсь получить количество данных, имеющих определенный статус на разные даты.Что-то вроде отслеживания доставки и получения сегодняшнего отчета.

Я использовал Pivot с хранимой процедурой.Я получаю результат в виде столбца и строки, но возвращаю значение null при выполнении Sp.

Может ли кто-нибудь подсказать, как можно исправить проблему?

Я пытался поместить запрос в некоторыепеременной, а затем выполнить, но это не сделано правильно.

    Create PROCEDURE [dbo].[GetCountOfShipmentWithStatus]

    @DateToStart Date,
    @DateToEnd Date,
    @LabName nvarchar(30)

    AS
    BEGIN

        SET NOCOUNT ON;

        WITH TrackShipment AS
    (
      SELECT exData.ID, CAST(ExpectedDeliveryDt AS DATE) AS Deliverydate,A.AccountCode,L.Name, DATENAME(dw, ExpectedDeliveryDt) AS DayOfWeek,exData.MileStoneTypeId AS TrackingStatus,exData.AccountNo 
      FROM [Tracking].[TrackingExternalData] exData
      Left Join [systemManagement].[SystemMetaData] sysmetadat on exdata.MileStoneTypeId=sysmetadat.systemMetaDataId
      Left Join  [Data_Replication_EZSHIP].[dbo].[AccountNumber] AS A on exData.AccountNo=A.AccountCode
      Left JOIN [Data_Replication_EZSHIP].[dbo].[Location] AS L ON A.LocationId = L.Id 
      WHERE L.Name=@LabName
      AND sysmetadat.systemMetaDataId IN ('E770CE7C-E0E6-40C6-AC51-5D2129F2DEB7','D6A011C8-C39C-45B5-9127-52D20C68E1C3','C7657AE1-9354-E911-BB4A-005056B00B08','559ECEC2-969A-4F8C-9A95-21C613D82F3A')
      AND exData.ExpectedDeliveryDt <= @DateToStart AND exData.ExpectedDeliveryDt >= @DateToEnd
      )

    SELECT  Deliverydate, DayOfWeek, 
            -- List of Pivoted Columns
            [E770CE7C-E0E6-40C6-AC51-5D2129F2DEB7],[D6A011C8-C39C-45B5-9127-52D20C68E1C3], [C7657AE1-9354-E911-BB4A-005056B00B08], [559ECEC2-969A-4F8C-9A95-21C613D82F3A]
    FROM TrackShipment

    PIVOT 
    (
       COUNT(Id)
       -- List of Pivoted columns
       FOR TrackingStatus IN([E770CE7C-E0E6-40C6-AC51-5D2129F2DEB7],[D6A011C8-C39C-45B5-9127-52D20C68E1C3], [C7657AE1-9354-E911-BB4A-005056B00B08], [559ECEC2-969A-4F8C-9A95-21C613D82F3A])
    ) as pvt
    ORDER BY Deliverydate DESC


    END
    GO

Я ожидаю, что возвращаемое значение будет таким же, как и результат сводной.

1 Ответ

0 голосов
/ 20 апреля 2019

Я предполагаю, что это условие неверно:

exData.ExpectedDeliveryDt <= @DateToStart AND 
exData.ExpectedDeliveryDt >= @DateToEnd

Я не знаю, что вы намерены, потому что вы не предоставили пример данных, желаемых результатов или объяснение логики, которую вы хотите.

Но я предполагаю, что сравнение обратное:

exData.ExpectedDeliveryDt >= @DateToStart AND 
exData.ExpectedDeliveryDt <= @DateToEnd
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...