[英]SQL Server - group by column for each corresponding value
I am new to this forum. 我是这个论坛的新手。 Hope fully I will be able to contribute and get my queries resolved too.
完全希望我能够做出贡献,也可以解决我的问题。 I am stuck at this that I do not know where to start off.
我被困在那我不知道从哪里开始。
I have below data set. 我有以下数据集。
| | Start Step|
开始步骤| End 1 |
结束1 | End 2 |
结束2 |
| | 1001866 |
1001866 | 1001867 |
1001867 | NULL |
NULL |
| | 1001866 |
1001866 | 1001868 |
1001868 | NULL |
NULL |
| | 1001868 |
1001868 | 1001873 |
1001873 | NULL |
NULL |
| | 1001873 |
1001873 | 1001868 |
1001868 | NULL |
NULL |
| | 1001868 |
1001868 | 1005206 |
1005206 | NULL |
NULL |
| | 1001873 |
1001873 | 1001867 |
1001867 | NULL |
NULL |
| | 1005206 |
1005206 | 1001873 |
1001873 | NULL |
NULL |
| | 1005206 |
1005206 | 1005385 |
1005385 | 1005386 |
1005386 |
| | 1005206 |
1005206 | 1005377 |
1005377 | 1005378 |
1005378 |
| | 1005378 |
1005378 | 1005376 |
1005376 | 1005206 |
1005206 |
| | 1005379 |
1005379 | 1005376 |
1005376 | 1005206 |
1005206 |
| | 1005379 |
1005379 | 1005380 |
1005380 | 1005381 |
1005381 |
| | 1005381 |
1005381 | 1005382 |
1005382 | 1001869 |
1001869 |
| | 1005381 |
1005381 | 1005383 |
1005383 | NULL |
NULL |
| | 1005381 |
1005381 | 1005384 |
1005384 | 1001872 |
1001872 |
| | 1005378 |
1005378 | 1005379 |
1005379 | NULL |
NULL |
| | 1005383 |
1005383 | 1001872 |
1001872 | NULL |
NULL |
| | 1005383 |
1005383 | 1005376 |
1005376 | 1005206 |
1005206 |
| | 1005383 |
1005383 | 1005381 |
1005381 | NULL |
NULL |
| | 1001869 |
1001869 | 1001871 |
1001871 | NULL |
NULL |
| | 1005386 |
1005386 | 1005376 |
1005376 | 1005206 |
1005206 |
I want each step to be in single row with their corresponding end1 and end2 and ordered by step and ranked. 我希望每个步骤都与相应的end1和end2放在一行中,并按步骤排序和排名。 I want the output to be as in the image:
我希望输出与图片中的一样:
| | Rank |
排名| Start |
开始| End Step 1 |
结束步骤1 | End Step 2 |
结束步骤2 |
| | 1 |
1 | 1001866 |
1001866 | 1001867 |
1001867 | NULL |
NULL |
| | 1 |
1 | 1001866 |
1001866 | 1001868 |
1001868 | NULL |
NULL |
| | 2 |
2 | 1001867 |
1001867 | NULL |
NULL | NULL |
NULL |
| | 3 |
3 | 1001868 |
1001868 | 1001873 |
1001873 | NULL |
NULL |
| | 3 |
3 | 1001868 |
1001868 | 1005206 |
1005206 | NULL |
NULL |
| | 4 |
4 | 1001869 |
1001869 | NULL |
NULL | NULL |
NULL |
| | 4 |
4 | 1001869 |
1001869 | 1001871 |
1001871 | NULL |
NULL |
| | 5 |
5 | 1001871 |
1001871 | NULL |
NULL | NULL |
NULL |
| | 6 |
6 | 1001872 |
1001872 | NULL |
NULL | NULL |
NULL |
| | 7 |
7 | 1001873 |
1001873 | 1001868 |
1001868 | NULL |
NULL |
| | 7 |
7 | 1001873 |
1001873 | 1001867 |
1001867 | NULL |
NULL |
| | 8 |
8 | 1005206 |
1005206 | 1001873 |
1001873 | NULL |
NULL |
| | 8 |
8 | 1005206 |
1005206 | 1005385 |
1005385 | 1005386 |
1005386 |
| | 8 |
8 | 1005206 |
1005206 | 1005377 |
1005377 | 1005378 |
1005378 |
| | 9 |
9 | 1005376 |
1005376 | NULL |
NULL | NULL |
NULL |
| | 10 |
10 | 1005377 |
1005377 | NULL |
NULL | NULL |
NULL |
| | 11 |
11 | 1005378 |
1005378 | 1005379 |
1005379 | NULL |
NULL |
| | 11 |
11 | 1005378 |
1005378 | 1005376 |
1005376 | 1005206 |
1005206 |
| | 12 |
12 | 1005379 |
1005379 | 1005376 |
1005376 | 1005206 |
1005206 |
| | 12 |
12 | 1005379 |
1005379 | 1005380 |
1005380 | 1005381 |
1005381 |
| | 13 |
13 | 1005380 |
1005380 | NULL |
NULL | NULL |
NULL |
| | 14 |
14 | 1005381 |
1005381 | 1005382 |
1005382 | 1001869 |
1001869 |
| | 14 |
14 | 1005381 |
1005381 | 1005383 |
1005383 | NULL |
NULL |
| | 14 |
14 | 1005381 |
1005381 | 1005384 |
1005384 | 1001872 |
1001872 |
| | 15 |
15 | 1005382 |
1005382 | NULL |
NULL | NULL |
NULL |
| | 16 |
16 | 1005383 |
1005383 | 1001872 |
1001872 | NULL |
NULL |
| | 16 |
16 | 1005383 |
1005383 | 1005376 |
1005376 | 1005206 |
1005206 |
| | 16 |
16 | 1005383 |
1005383 | 1005381 |
1005381 | NULL |
NULL |
| | 17 |
17 | 1005384 |
1005384 | NULL |
NULL | NULL |
NULL |
| | 18 |
18 | 1005385 |
1005385 | NULL |
NULL | NULL |
NULL |
| | 19 |
19 | 1005386 |
1005386 | 1005376 |
1005376 | 1005206 |
1005206 |
| | 19 |
19 | 1005386 |
1005386 | 1005387 |
1005387 | NULL |
NULL |
| | 20 |
20 | 1005387 |
1005387 | NULL |
NULL | NULL |
NULL |
Just highlighted few values for better understanding. 只是突出显示了一些值以便更好地理解。
Is it possible ? 可能吗 ? Can any one please help ?
有人可以帮忙吗?
select dense_rank() over(order by [start step]) [rank], * from
(select * from yourtable
union
select distinct [end 1], null, null from yourtable where [end 1] is not null
union
select distinct [end 2], null, null from yourtable where [end 2] is not null
)a order by [start step]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.