带有枢轴的存储过程不会返回结果结构而是返回零值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有枢轴的存储过程不会返回结果结构而是返回零值相关的知识,希望对你有一定的参考价值。

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

我希望返回值与pivot的结果相同。

答案

我猜这个条件不正确:

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

我不知道您的意图,因为您没有提供样本数据,所需结果或您想要的逻辑解释。

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

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

以上是关于带有枢轴的存储过程不会返回结果结构而是返回零值的主要内容,如果未能解决你的问题,请参考以下文章

MybatisMyBatis调用带有返回结果output参数的存储过程上与ibatis的区别

带有表类型参数的存储过程返回数据但 SqlDataAdapter 不会填充

存储过程不返回结果,但查询返回

无法使用存储过程获得确切的结果,因为它返回带有增量的值[关闭]

sqlserver 存储过程 返回结果集的 例子

oracle存储过程 中把临时表数据 返回结果集