首页 > 解决方案 > SQL Server:如果列不为空,则显示为新行

问题描述

我有一张这样的桌子:

id  name  col1  col2  col3  col4  col5  col6
----------------------------------------------
1   user  b     c     e     f     g     Null

我想将这样的结果显示为 col4 和 col5 不为空,但不显示 col6,因为它为空:

id  name  col1  col2  col3  col4  
----------------------------------
1   user  b     c     e     f          
1   user  b     c     e     g(from col5)  

标签: sqlsql-server

解决方案


你可以用UNPIVOT这个。这会自动排除NULL

SELECT id,
       name,
       col1,
       col2,
       col3,
       ucol AS col4
FROM   YourTable
       UNPIVOT (x
               FOR ucol IN (col4,
                            col5,
                            col6)) u 

推荐阅读