ale*_*sic 0 t-sql sql-server merge
我有这个sql结果
color red AA
color red BB
color red CC
color blue DD
color blue EE
Run Code Online (Sandbox Code Playgroud)
有没有办法按列合并,以获得以下结果?
color red AA
BB
CC
blue DD
EE
Run Code Online (Sandbox Code Playgroud)
这通常是您在应用程序的表示层上执行的操作,但如果要在SQL中执行此操作,则可以使用row_number():
select
case when col1rn = 1 then col1 else '' end col1,
case when col2rn = 1 then col2 else '' end col2,
col3
from
(
select col1, col2, col3,
row_number() over(partition by col1 order by col1, col2, col3) col1rn,
row_number() over(partition by col1, col2 order by col1, col2, col3) col2rn
from yt
) d;
Run Code Online (Sandbox Code Playgroud)
请参阅SQL Fiddle with Demo.您将替换from yt您的查询,给出结果:
| COL1 | COL2 | COL3 |
-----------------------
| color | blue | DD |
| | | EE |
| | red | AA |
| | | BB |
| | | CC |
| test | blue | CC |
| | red | AA |
| | | BB |
Run Code Online (Sandbox Code Playgroud)