插入表格,案例

时间:2011-12-26 12:40:07

标签: sql sql-server tsql

我需要插入新表(2列)与其他表和第二行的不同描述。

所以喜欢:

Insert into @Temp1
Select distinct description from Table1,
CASE
WHEN aaa then 1
When bbb then 2
END

所以基本上对于第一列中的每个插入值,在第二列中,取决于第一个值,取几个可能值中的一个。

这可能吗?

3 个答案:

答案 0 :(得分:3)

是的,这是可能的。您似乎错过了Simple CASE expression中的input_expression,并且FROM位于错误的位置..

INSERT INTO @Temp1
SELECT DISTINCT description,
                CASE description
                  WHEN aaa THEN 1
                  WHEN bbb THEN 2
                END
FROM   Table1

当然,如果aaa等是常量,而不是从Table1中的其他列派生,那么第二列可以从第一列确定性地派生出来(并且不会在第一列中进行更改)未来的更新)可能没有任何意义存储它。您可以使用计算列定义定义表变量,或者在CASE时使用SELECT表达式。

计算列案例

的示例
DECLARE @Temp1 TABLE (
  [description] VARCHAR(50),
  [calcColumnExample] AS CASE description
       WHEN 'aaa' THEN 1
       WHEN 'bbb' THEN 2
     END 
) 

答案 1 :(得分:3)

尝试这样做:

Insert into @Temp1
Select distinct description,
CASE description
WHEN 'aaa' then 1
When 'bbb' then 2
END
 from Table1

答案 2 :(得分:2)

作为CASE的替代方案,您还可以使用联接到内联表,如下所示:

SELECT DISTINCT
  t.Description,
  x.SpecialValue
FROM Table1 t
  INNER JOIN (
    SELECT 'aaa', 1 UNION ALL
    SELECT 'bbb', 2 UNION ALL
    …
  ) x (Description, SpecialValue) ON t.Description = x.Description
相关问题