1

我正在使用使用 SQL Server 的 SSRS 2005。

我有 2 张桌子:

订单- 包含未发货(未发货)订单

Order_History - 包含已关闭(已发货和已开票)的订单

我正在使用 aUNION ALL从两个表中获取数据。但是,我想为值添加 1 个多值参数 OrderType,其值为“open”、“closed”、“both”,以便用户可以说他们只想打开、只想关闭或两者兼而有之。

数据集查询(表使用)中有没有办法放置一个 IF 或 CASE 以便查询根据选择的内容只运行一个选择语句?

换句话说,类似:

"IF (@OrderType) = 'OPEN' select field a,b from Order; 
 ELSEIF (@OrderType) = 'CLOSED' then select field a,b from Order_History; 
 Else select field a,b from Order UNION ALL select field a,b from Order_History".  
4

1 回答 1

0

您可以分别使用“打开”和“关闭”在 UNION 中的两个选择中添加一列,然后围绕它进行外部查询以仅使用 @orderType 上的 case 语句选择您想要的值:

SELECT *
FROM (
  SELECT *, 'open' AS STATUS
  FROM order
  UNION ALL
  SELECT *, 'closed'
  FROM Order_History
  ) a
WHERE STATUS = CASE 
    WHEN @OrderType = 'both' THEN STATUS
    ELSE @OrderType
    END;

sqlfiddle demo

于 2013-11-12T00:32:14.627 回答