首页 > 解决方案 > 会不会有这样的情况,比如只把第一列的数据带到第一行,第二行把第二列的数据带到第二行?

问题描述

我有 5 列(a 列、b 列、c 列、d 列、e 列)

会不会有这样的情况,比如只把第一列的数据带到第一行,第二行把第二列的数据带到第二行?

这种情况我该怎么办?

编辑 v2:

抱歉,我无法正确解释。有时c列可以重复。有一列(列 e)我想对我的结果进行分组,该列的数据如 1-2-3-4 如下:

  1. abc -- -- -- 1
  2. -- abc -- -- 1
  3. -- -- abc -- 1
  4. -- -- abc -- 1
  5. -- -- -- abc 1
  6. abc -- -- -- 2
  7. -- abc -- -- 2
  8. -- -- abc -- 2
  9. -- -- -- abc 2

顺便说一句,我有超过 500 行,当组值更改时,abc 从列 a 开始。

标签: sqlsql-server

解决方案


with cte as 
 (
     select t.*, row_number()over(order by(select 1))rn from mytable t
 ) 
 select (case when rn=1 then column_a end) column_a,
             (case when rn=2 then column_b end) column_b,
             (case when rn=3 then column_c end) column_c,
             (case when rn=4 then column_d end) column_d,
             (case when rn=5 then column_e end) column_e
 from cte;

如果您想要任何特定顺序的行,那么您可以使用您喜欢的 order by 子句而不是 order by(select 1)


推荐阅读