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

红人

相关问题