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
Я ожидаю, что возвращаемое значение такой же, как результат поворота.
Я предполагаю, что это условие неверно:
exData.ExpectedDeliveryDt <= @DateToStart AND
exData.ExpectedDeliveryDt >= @DateToEnd
Я не знаю, что вы намереваетесь, потому что вы не предоставили пример данных, желаемых результатов или объяснение логики, которую вы хотите.
Но я предполагаю, что сравнение обратное:
exData.ExpectedDeliveryDt >= @DateToStart AND
exData.ExpectedDeliveryDt <= @DateToEnd