【问题标题】:Stored Procedure with Pivot Does Not Return Result Structure but Zero Value带 Pivot 的存储过程不返回结果结构,而是返回零值
【发布时间】:2019-04-20 15:34:42
【问题描述】:

MyActualresult我正在尝试计算在不同日期具有特定状态的数据。比如跟踪发货和获取今天的报告。

我已将 Pivot 与存储过程一起使用。我以列和行的形式得到结果,但在执行 Sp 时返回值 null

谁能建议我如何纠正这个问题?

我尝试将查询放入某个变量中然后执行,但它没有正确完成。

    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

我希望返回值与枢轴结果相同。

【问题讨论】:

    标签: mysql sql stored-procedures


    【解决方案1】:

    我猜这个条件不正确:

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

    我不知道你想要什么,因为你没有提供样本数据、期望的结果或你想要的逻辑的解释。

    但我猜这个比较是倒退的:

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

    【讨论】:

    • 您好,同意需要更改条件,我已经这样做了。
    • 我添加了一张[实际结果]的图片,我需要的是与结果相同的返回值。
    猜你喜欢
    • 1970-01-01
    • 2021-03-22
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 2013-06-21
    相关资源
    最近更新 更多