多值参数

时间:2017-09-20 08:00:29

标签: sql-server tsql variables ssrs-2008

下面的存储过程会填满我的Projectphase参数。如您所见,用户首先必须选择@PurchaseOrder,然后填充Projectphase参数。

CREATE PROCEDURE [dbo].[USP_GetProjectPhase] 
     @PurchaseOrder INT
AS
    SELECT       
        pp.ProjectPhaseID, pp.Phase  
    FROM        
        ProjectPhase pp
    WHERE       
        @PurchaseOrder = pp.PurchaseOrderId

现在,当用户选择确实有PurchaseOrder的{​​{1}}时,一切顺利。这个问题出现在没有Projectphases的购买者身上。

报告中显示的用于我的数据集的查询在WHERE子句中具有以下行。它是一个多值参数,因为用户需要能够选择多个Projectphases。

ProjectPhase

我尝试过使用NULL,NULL的UNIONS。我已经尝试过使用ISNULL的东西,但是当WHERE reg.ProjectPhaseId IN (SELECT Value FROM fnLocal_CmnParseList(@Phase,',')) 为NULL时,我似乎无法执行查询。

一些帮助会受到高度赞赏,因为我现在已经开始了很长时间。感谢

1 个答案:

答案 0 :(得分:1)

终于找到了答案:

[dbo].[USP_GetProjectPhase] @PurchaseOrder INT
AS

SELECT      -1 AS 'ProjectPhaseID'
            ,'No Filter' AS 'Phase'
UNION
SELECT       pp.ProjectPhaseID
            ,pp.Phase  

FROM        ProjectPhase pp
WHERE       @PurchaseOrder = pp.PurchaseOrderId 

在我的查询中,我将WHERE子句更改为:

WHERE (reg.ProjectPhaseId IN (SELECT Value FROM fnLocal_CmnParseList(@Phase,',')) OR @Phase = '-1')