使用第一列在表格中的项目组之间添加一行

时间:2017-08-28 14:48:25

标签: sql-server

我有一个这样的表,第一列标识该行所属的组,第二列是实际数据。

+--------+--------+
|Column A|Column B|
+--------+--------+
|A       |1       |
|A       |2       |
|A       |3       |
|B       |2       |
|B       |3       |
|B       |4       |
+--------+--------+

我希望将表格转换为这样,但每个组本身都有一个标题行。

+--------+--------+
|Column A|Column B|
+--------+--------+
|A       |NULL    |
|NULL    |1       |
|NULL    |2       |
|NULL    |3       |
|B       |NULL    |
|NULL    |2       |
|NULL    |3       |
|NULL    |4       |
+--------+--------+

1 个答案:

答案 0 :(得分:1)

这是一个解决方案:

SELECT CASE WHEN p.columnB is null THEN p.columnA END as ColumnA,
       p.columnB
FROM(
    SELECT distinct t.columnA as columnA,NULL as columnB
    FROM YourTable t
    UNION ALL  
    SELECT s.columnA,s.columnB
    FROM YourTable s) p
ORDER BY p.columnA,
         CASE WHEN p.columnB IS NULL THEN 0 ELSE 1 end

但是,如果你打算用这些数据做其他事情而不是呈现它,我强烈建议agasint它。