将具有相同结果ID的行选择加入行

时间:2019-04-28 20:43:25

标签: sql sql-server join select pivot

我有以下查询结果(我将结果存储在#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

但是此查询要求按语法将字母,第1列,第2列添加到分组中,如果执行此操作,则会得到与从#TMP中选择*相同的结果

PD:#TMP表始终必须包含3个相同的ID,字母行

PD2:对于具有相同ID的结果,第一行的Column1值可能大于第二列的值,而在下一行中,第二列的column2值可能大于column1。

1 个答案:

答案 0 :(得分:4)

您可以将Device.getInfo()窗口功能与row_number()一起使用

conditional aggregation

Demo

相关问题