【发布时间】:2019-04-28 20:43:25
【问题描述】:
我有以下查询结果(我将此结果存储在#TMP 表中)
Id | Letter | Column1 | Column2
1 | A | 400 | 200
1 | A | 101 | 201
1 | A | 102 | 203
2 | A | 100 | 200
2 | A | 700 | 201
2 | A | 102 | 202
我想要做的是对该#TMP 表进行选择,但现在我想要这样的输出:
Id | Letter | Alias1 | Alias2 | Alias1-1 | Alias2-1 | Alias1-2 | Alias2-2
1 | A | 400 | 200 | 101 | 201 | 102 | 203
2 | A | 100 | 200 | 700 | 201 | 102 | 202
我怎样才能做到这一点?我尝试加入,但我得到了很多相同的结果。
select A.Id, A.Letter, B.Column1, B.Column2
from #TMP A
inner join #TMP B ON A.Id = B.Id AND A.Letter = B.Letter
我也尝试过分组
select Id, Letter, Column1, Column2
from #TMP
group by Id
但是此查询要求按语法将字母、column1、column2 添加到组中,如果我这样做,我会得到与 select * from #TMP 相同的结果
PD:#TMP 表必须始终包含 3 个相同的 id,letter 行
PD2:对于具有相同 Id 的结果,Column1 的值可能在一行中大于 Column2 的值,而在下一行中,column2 的值可能大于 column1。
【问题讨论】:
-
您确实需要一个行排序列来确保每次都获得相同的结果。
标签: sql sql-server join select pivot