繁体   English   中英

SQL查询将两行合并为一行数据

[英]SQL Query combine two rows into one row of data

我有一张桌子(见下图-红色框)。 它描述了我表的内容(A,B,C和D)是列。 数据结构将始终是这样,如果col A为Type_1,则只有col B有内容,而如果Col A为Type_2,则Col C和D有内容,而col B为NULL。

现在,用绿色框封闭的表是我想要的输出。

在此处输入图片说明

我在构建select语句方面的经验不是很广泛,我几乎倾向于创建两个单独的表来获得所需的结果(例如,一个表仅用于Type_1数据,另一个表仅用于Type_2数据)。

问题是,是否可以使用SELECT查询查询两行并将其合并为单个输出结果? 考虑到这两行在同一张表上?

谢谢。

像这样:

SELECT
  Table2Id,
  MAX(B) B,
  MAX(C) C,
  MAX(D) D
FROM tbl
WHERE A != 'Type_3'
GROUP BY Table2Id

假设类型1仅存在一行数据,类型2仅存在一行数据,则可以使用以下命令:

 SELECT Id, MAX(B) AS B, MAX(C) AS C, MAX(D) AS D
   FROM Table2
  WHERE A IN ('Type_1','Type_2')
  GROUP BY Id

SQL提琴中的示例

您可以通过将子查询括在圆括号中来制作子查询。 如:

SELECT (SELECT TOP 1 B FROM table ORDER BY some_ordering), (SELECT TOP 1 C FROM table WHERE NOT C IS NULL), D FROM table

括号内的查询可以应用于任何表,并且可以将主查询中的数据用于所选值的计算和过滤器中。

暂无
暂无

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

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