简体   繁体   English

SQL Server-每个对应值的按列分组

[英]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.

相关问题 求SQL中每组对应的第N个值和平均值 - Find Nth value and average value corresponding to each group in SQL Athena 获取每组中的最小值和对应的其他列值 - Athena get the minimum value in each group and corresponding other column values 在SQL中查找与每个组中的第N个值相对应的行 - Finding the row corresponding to the Nth value in each group by in SQL 根据列值返回SQL Server列名和相应的值 - Return SQL Server column name and corresponding value based on column value 使用 SQL 服务器在 SQL 查询的结果中获取每个组中特定列的总和和特定列的最后一个值 - Get the summation a specific column and a last value of a specific column in each group in a result of SQL query using SQL Server SQL查询以获取与基于group by的列的最大值对应的另一列的值 - SQL query to get value of another column corresponding to a max value of a column based on group by SQL Server-如果列包含值,则按ID分组 - SQL Server - group by ID if column contains a value SQL Server分组依据和多列的最大值 - SQL Server group by and max value for multiple column 按月分组并显示每个月对应的值 - Group by a month and display each month to corresponding value 为 SQL Server 中的列中的每个值计算冗余 - Count redundant for each value in a column in SQL server
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM