0

我正在尝试从一个选择中插入一个临时表,其中包含一个定义要从哪个表插入的 case 语句,但我无法获得正确的语法。

我想做类似以下的事情:-

DECLARE @TempTable TABLE(ID int IDENTITY, Charges varchar(270));
INSERT INTO @TempTable SELECT (
  CASE @inItemType
    WHEN 1 THEN SELECT ID, Charges FROM TicketType WHERE Charges <> ''
    WHEN 10 THEN SELECT ID, Charges FROM SeatType WHERE Charges <> ''
  END
);

有没有人知道这是否可能或可以提出更好的方法?

4

1 回答 1

1

我会这样做:

DECLARE @TempTable TABLE(ID int IDENTITY, Charges varchar(270));
INSERT INTO @TempTable
SELECT ID, Charges FROM TicketType WHERE Charges <> '' and @inItemType=1
UNION ALL
SELECT ID, Charges FROM SeatType WHERE Charges <> '' and @inItemType=10;

与大多数主流语言中的大多数CASE 表达式一样,表达式计算单个(标量)值。它不能返回元组或(在这种情况下)整个行集。

于 2013-07-25T09:47:36.203 回答