SQL 行到列?

SQL rows to columns?

我有一个生成的查询:

ID group  data
-- -----  ----
1  A      123
1  B      456
2  A      234
2  B      567

我想将其转换为:

ID A data  B data
-- ------  ------
1  123     456
2  234     567

有没有简单的方法来做到这一点?查询已经非常复杂,所以我试图避免这样的事情:

SELECT data FROM <existing query> WHERE group='A'
OUTER JOIN
SELECT data FROM <existing query> WHERE group='B'

只需使用条件聚合:

select id,
       max(case when group = 'A' then data end) as group_a,
       max(case when group = 'B' then data end) as group_b
from (<your query here>) q
group by id;

您可以将它构建到您现有的查询中,但如果没有看到它,就无法提出任何建议。