SQL重新排列行

SQL重新排列行,sql,sql-server,Sql,Sql Server,我有查询和返回值 select * from table1 结果: Dept classin classincount classout classoutcount ---------------------------------------------------------- DeptA ClassA 2 NULL NULL DeptA ClassB 4 NULL NUL

我有查询和返回值

select * from table1
结果:

Dept    classin classincount    classout    classoutcount
----------------------------------------------------------
DeptA   ClassA   2               NULL        NULL
DeptA   ClassB   4               NULL        NULL
DeptA   NULL    NULL             ClassC       1
DeptA   NULL    NULL             ClassD       6
DeptA   ClassF  5                NULL        NULL
我希望回报像这样:

Dept    classin classincount    classout    classoutcount
----------------------------------------------------------
DeptA   ClassA     2             ClassC         1
DeptA   ClassB     4             ClassD         6
DeptA   ClassF     5             NULL          NULL

我需要你的帮助。谢谢。

如果我将此理解为希望根据计数列(从最小到最大)对齐列,则可以使用聚合或联接来实现

select coalesce(ci.dept, co.dept) as dept,
       ci.classin, ci.classincount,
       co.classout, co.classoutcount
from (select t.*,
             row_number() over (partition by dept order by classincount asc) as seqnum
      from t
      where classincount is not null
     ) ci full join
     (select t.*,
             row_number() over (partition by dept order by classoutcount asc) as seqnum
      from t
      where clssoutcount is not null
     ) co
     on ci.dept = co.dept and ci.seqnum = co.seqnum

ClassC
ClassA
有什么关系?合并行的规则是什么?SQL表表示无序集,因此没有排序。
ClassC
可以与
ClassB
对齐吗?没有关系,只有值名。而且不需要命令。除掉NULL@user13549459,很高兴你找到了一个有用的答案。请考虑通过点击左边的灰色复选标记来接受答案。它会奖励回答问题的人一些声望点数,你也会得到一些。