簡體   English   中英

SQL-Server:如何使用數據透視表獲取結果?

[英]SQL-Server : How to use pivot table to get the result?

我有下表

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 . 

我可以使用哪種方法獲得該結果? 數據透視表? 哪種方法更好?

請幫我。

提前致謝!

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

多謝您的回覆。 我通過以下代碼在解決方案中得到了想要的結果:

-- 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)

我得到了想要的結果。 再次謝謝大家。

在SQL中引用了該站點“ 動態數據透視表查詢”

紅人隊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM