嗨我试图使我的查询的结果动态对齐每列1行,请帮助我,如果这是可能的
例如,这是我的表
id , names , comm , contrib
1 samp1 randtext 9
2 samp1 randtext 2
3 samp1 randtext 3
5 samp2 randtext 4
6 samp2 randtext 1
然后我试图得到的结果是
names comm1 comm2 comm3 contrib1 contrib2 contrib3
samp1 randtext,randtext,randtext 9 , 2 , 3
samp2 randtext,randtext, 4 , 1 ,
谢谢你的帮助。
我们可以使用ROW_NUMBER
和pivot查询的组合:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY names ORDER BY id) rn
FROM your_table
)
SELECT
names,
MAX(CASE WHEN rn = 1 THEN comm END) comm1,
MAX(CASE WHEN rn = 2 THEN comm END) comm2,
MAX(CASE WHEN rn = 3 THEN comm END) comm3,
MAX(CASE WHEN rn = 1 THEN contrib END) contrib1,
MAX(CASE WHEN rn = 2 THEN contrib END) contrib2,
MAX(CASE WHEN rn = 3 THEN contrib END) contrib3
FROM cte
GROUP BY
names
ORDER BY
names;