2014-09-19 99 views
0

我有一個表,如下所示:矩陣結果使用SQL Server 2008 R2

CREATE TABLE matrix 
(
    a VARCHAR(10), 
    b VARCHAR(10) 
); 

INSERT INTO matrix VALUES('A','H') 
INSERT INTO matrix VALUES('B','I') 
INSERT INTO matrix VALUES('C','J') 
INSERT INTO matrix VALUES('D','K') 
INSERT INTO matrix VALUES('E','L') 
INSERT INTO matrix VALUES('F','M') 
INSERT INTO matrix VALUES('G','N') 
INSERT INTO matrix VALUES('A','M') 

SELECT * FROM matrix; 

的樣子:

a b 
------- 
A H 
B I 
C J 
D K 
E L 
F M 
G N 
A M 

現在我想顯示的結果採用以下矩陣格式:

預期結果:

 H I J K L M N 
-------------------------------------- 
A | 1 0 0 0 0 1 0 
    | 
B | 0 1 0 0 0 0 0 
    | 
C | 0 0 1 0 0 0 0 
    | 
D | 0 0 0 1 0 0 0 
    | 
E | 0 0 0 0 1 0 0 
    | 
F | 0 0 0 0 0 1 0 
    | 
G | 0 0 0 0 0 0 1 
+1

http://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx – DavidG 2014-09-19 10:58:21

+0

@DavidG,是啊!得到它了。非常感謝。 – Meem 2014-09-19 11:06:06

回答

0
DECLARE @DynamicPivotQuery AS NVARCHAR(max) 
DECLARE @ColumnName AS NVARCHAR(max) 
DECLARE @ColumnName1 AS NVARCHAR(max) 

SELECT @ColumnName = Isnull(@ColumnName+',', '') + b,   
     @ColumnName1 = Isnull(@ColumnName1+',', '') + 'isnull(' + b + ',0)' + ' as ' + b 
FROM ( SELECT DISTINCT b FROM matrix) AS qry1 

--Select @ColumnName,@ColumnName1 
SET @DynamicPivotQuery =  
' Select ' + @ColumnName1 + '  
from (Select *,1 ''VALUE'' from matrix) as t pivot (Sum(VALUE) for b in (' + @ColumnName  + ')) 
as pvt ' 

--print @DynamicPivotQuery 
EXEC Sp_executesql @DynamicPivotQuery 
+0

你能格式化代碼嗎? – radar 2014-09-19 12:07:09

+0

處理空例 – arunbabu 2014-09-19 14:40:20