[英]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.