2012-05-05 18 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

レッズ

関連する問題