2012-03-05 14 views
4

私はこのクエリSQL ServerのピボットのNull?

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データを変更せずに!)

+0

の可能複製(http://stackoverflow.com/questions/9567785/null-in-sql-server-pivot) – Oded

+0

@Oded double submit ...間違って。ありがとう –

+0

あなたの出力を共有してこれをよりよく理解する.. –

答えて

7

用途:

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; 

出力:[?SQLサーバーのピボットでのNULL]

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