我有一张桌子(见下图 - 红盒子)。它描述了我的表(A,B,C和D)的内容是列。数据结构将始终如下,如果col A为Type_1,则只有col B具有内容,而如果Col A为Type_2,则Col C和D具有内容,而col B为NULL。
现在,用绿框括起来的表格是我想要的输出。
我构建select语句的经验不是很广泛,我几乎倾向于创建两个单独的表来获得我想要的结果(比如1表只用于Type_1数据而另一个表只用于Type_2数据)。
问题是,是否可以使用SELECT查询查询两行并将其组合成单个输出结果?考虑到这两行是在同一个表上吗?
感谢。
答案 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
中的示例
答案 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
括号内的查询可以应用于任何表,并且可以使用主查询中的数据计算所选值和过滤器。