2012-05-05 100 views
0

我有以下表SQL-Server:如何使用數據透視表來獲得結果?

DECLARE @sample TABLE 
(
    ColNam varchar(20), 
    C1 int 
) 


INSERT INTO @sample 
SELECT 'Admin', 1 UNION ALL 
SELECT 'Admin', 4 UNION ALL 
SELECT 'Admin', 7  UNION ALL 
SELECT 'NUser', 3 UNION ALL 
SELECT 'NUser', 6 UNION ALL 
SELECT 'NUser', 8 

SELECT * FROM @sample 

我想要得到的格式如下:

Admin | 1 | 4 | 7 
NUser | 3 | 6 | 8 

All 1,4,7,3,6,8 can be variables . 

哪一種方法,我可以用它來得到這一結果?數據透視表? 哪種方法會更好?

請幫幫我。

在此先感謝!

+0

感謝點破 – RedsDevils

回答

1
DECLARE @sample TABLE 
(
    ColNam varchar(20), 
    C1 int 
) 


INSERT INTO @sample 
SELECT 'Admin', 1 UNION ALL 
SELECT 'Admin', 4 UNION ALL 
SELECT 'Admin', 7 

SELECT * 
FROM 
(
    SELECT ColNam,C1 
    FROM @sample 
) A 
PIVOT 
(
    SUM(C1) FOR C1 IN([1],[4],[7]) 
) PVT 


--OR you might need this 

SELECT CAST(ColNam AS VARCHAR(100)) + ' | ' + CAST([1] AS VARCHAR(100))+ ' | ' + CAST([4] AS VARCHAR(100))+ ' | ' + CAST([7] AS VARCHAR(100)) 
FROM 
(
    SELECT ColNam,C1 
    FROM @sample 
) A 
PIVOT 
(
    SUM(C1) FOR C1 IN([1],[4],[7]) 
) PVT 
+0

感謝您的回覆,如果我想不僅是「管理員」我可以有其他的「N用戶」使用不同的值。我怎麼才能得到它? – RedsDevils

0

感謝您的回覆。我得到了結果我想在我的解決方案中使用以下代碼:

-- Create Table 
CREATE TABLE tbl_sample (ColNam varchar(20),C1 int) 

-- Insert Data 
INSERT INTO tbl_sample 
SELECT 'Admin', 1 UNION ALL 
SELECT 'Admin', 4 UNION ALL 
SELECT 'Admin', 7 UNION ALL 
SELECT 'NUser', 1 UNION ALL 
SELECT 'NUser', 5 UNION ALL 
SELECT 'NUser', 4 

-- Because my C1 column can be variable so I create dynamic like following 
DECLARE @PivotColumnHeaders VARCHAR(MAX) 
SELECT @PivotColumnHeaders = 
COALESCE(
    @PivotColumnHeaders + ',[' + cast(C1 as varchar) + ']', 
    '[' + cast(C1 as varchar)+ ']' 
) 
    FROM tbl_sample 
    GROUP BY C1 

-- Then Select like following 
DECLARE @PivotTableSQL NVARCHAR(MAX) 
SET @PivotTableSQL = N' 
    SELECT * 
    FROM (
    SELECT ColNam,C1 
    FROM tbl_sample 
) AS PivotData 
    PIVOT (
    MAX(C1) 
    FOR C1 IN (
     ' + @PivotColumnHeaders + ' 
    ) 
) AS PivotTable 
' 

EXECUTE(@PivotTableSQL) 

我得到了我想要的結果。再次感謝你們。

我引用這個網站 Dynamic Pivot Table Queries in SQL

紅人

相關問題