sql - SQL Server 数据透视表中为空?

标签 sql sql-server sql-server-2005 tsql

我有这个查询

DECLARE @Test TABLE
(
     RowID  INT IDENTITY(1,1) PRIMARY KEY
    ,[Name]VARCHAR(10) NOT NULL
    ,tool   VARCHAR(10) NOT NULL,
    stam NVARCHAR(MAX)

);  
INSERT  @Test   VALUES ('john', 'vocals','1');
INSERT  @Test   VALUES ('john', 'guitar','1');
INSERT  @Test   VALUES ('paul', 'vocals','1');
INSERT  @Test   VALUES ('paul', 'bass','1');
INSERT  @Test   VALUES ('george', 'vocals','1');
INSERT  @Test   VALUES ('george', 1,'1');
INSERT  @Test   VALUES ('ringo', 'vocals','1');
INSERT  @Test   VALUES ('ringo', 3,'1');
INSERT  @Test   VALUES ('ringo', 'drums','1');
INSERT  @Test   VALUES ('yoko', 'vocals','1');
INSERT  @Test   VALUES ('royi', 'vocals','1');
INSERT  @Test   VALUES ('royi', 'guitar','1');


;WITH PivotSource
AS
(
    SELECT   t.[Name], t.[tool]  
     FROM    @Test t
)

SELECT  * 
FROM    PivotSource  
 PIVOT   ( max(tool) FOR tool IN ([vocals], [guitar], [bass],[drums]) ) pvt;

结果是:

enter image description here

有没有办法将 null 替换为 "" (空字符串)? (无需修改 CTE 数据!)

最佳答案

用途:

SELECT pvt.Name
    , isnull(pvt.[vocals], '') [vocals]
    , isnull(pvt.[guitar], '') [guitar]
    , isnull(pvt.[bass], '') [bass]
    , isnull(pvt.[drums], '') [drums]
FROM PivotSource  
PIVOT
(
    max(tool) 
    FOR tool 
    IN ([vocals], [guitar], [bass], [drums]) 
) pvt;

输出:

Name       vocals     guitar     bass       drums
---------- ---------- ---------- ---------- ----------
george     vocals                           
john       vocals     guitar                
paul       vocals                bass       
ringo      vocals                           drums
royi       vocals     guitar                
yoko       vocals                           

关于sql - SQL Server 数据透视表中为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9567807/

相关文章:

SQL Server 2005 (Express) - 登录与用户

mysql - 使用外键时,您总是必须加入吗?

sql-server - 如何将 SQLAlchemy create_engine() 与包含 @ 的密码一起使用

sql - 如何在sql函数中创建新表

SQL Server 查询 - 为什么会出现死锁?

java - 如何将我的 Web 应用程序连接到 SQL Server/SQL Server Express

sql-server-2005 - SQL Server 行锁

php - 重复键上的 Mysql 仅当 BlahVAl < BlahRowVal 时更新表

mysql - mysql 日志表中事件首次出现

sql - 多维数组输出为 JSON