【问题标题】:Correct syntax for Insert Into Select when using Case statements in SQL Server在 SQL Server 中使用 Case 语句时插入选择的正确语法
【发布时间】:2013-07-25 09:44:14
【问题描述】:

我正在尝试从一个 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
);

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

【问题讨论】:

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


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 2021-10-05
      • 2017-05-29
      • 1970-01-01
      • 2015-02-11
      • 2018-07-23
      • 1970-01-01
      相关资源
      最近更新 更多