繁体   English   中英

SQL Server:如何为不同的INSERT INTO语句编写CASE查询?

[英]SQL Server : how to write a CASE query for a different INSERT INTO statements?

问题是指T-SQL查询。

有两个表:

表-A:

 A_ID | Category | SomeValue .
 -----+----------+-----------.
   0  |    1     |   ...     .
   1  |    1     |   ...     .
   2  |    2     |   ...     .
   2  |    2     |   ...     .

Table_B应该由Table_A的Category条件填充。 根据Table_A的类别,我想将一些数据写入第二个表的第1列或第2列 另一列应保持为空:

 B_ID | cat_x    | cat_y     .
 -----+----------+-----------.
   0  | someval  |   null    . //Category was 1
   1  |  null    |  someval  . //Category was 2
   2  |  null    |  someval  . //Category was 2
   2  | someval  |   null    . //Category was 1

我的输入是整个表格。 对于每一行,都必须查找目标列以进行写入。

我曾尝试与CASE合作,但没有得到。 以下是一些伪代码,可以帮助您理解:

CASE
   WHEN Category=1
      THEN 
         INSERT INTO (B_ID,cat_x)
             SELECT (someval) //ID could get filled automatically
             FROM sometable
   WHEN Category = 2
      THEN 
         INSERT INTO (B_ID,cat_y)
             SELECT (someval) //ID could get filled automatically
             FROM sometable
END

我猜我最大的问题是如何为条件/从句编写语法。

不完全的。 case表达式应该是`select查询的一部分:

INSERT INTO (B_ID, cat_x, cat_y)
        SELECT (case when a.category = 1 then someval end),
               (case when a.category = 2 then someval end)
        FROM A
        WHERE category IN (1, 2);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM