SQL Query将两行合并为一行数据

时间:2014-05-19 12:51:18

标签: sql sql-server

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

现在,用绿框括起来的表格是我想要的输出。

enter image description here

我构建select语句的经验不是很广泛,我几乎倾向于创建两个单独的表来获得我想要的结果(比如1表只用于Type_1数据而另一个表只用于Type_2数据)。

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

感谢。

3 个答案:

答案 0 :(得分:3)

这样的事情:

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

答案 1 :(得分:1)

假设type1只有一行数据,类型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 Fiddle

中的示例

答案 2 :(得分:0)

您可以通过将子查询括在括号中来创建子查询。如:

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

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