在SQL Server中使用Case语句时,插入到Select的正确语法

时间:2013-07-25 09:44:14

标签: sql-server-2008 case insert-into

我试图从一个带有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
);

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

1 个答案:

答案 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 表达式与大多数主流语言中的大多数表达式一样,计算单个(标量)值。它不能返回元组或(如本例中)整个行集。