我试图从一个带有case语句的select中插入一个临时表,该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
);
是否有人知道这是否可能或者可以提出更好的方法?
答案 0 :(得分: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
表达式与大多数主流语言中的大多数表达式一样,计算单个(标量)值。它不能返回元组或(如本例中)整个行集。