下面的存储过程会填满我的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时,我似乎无法执行查询。
一些帮助会受到高度赞赏,因为我现在已经开始了很长时间。感谢
答案 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')