在 SQL Server 中,假設您有一個這樣的表,稱為“測驗”:
| 所有者 | 狀態 |
|---|---|
| 約翰 | 待辦的 |
| 約翰 | 完全的 |
| 起訴 | 必需的 |
| 起訴 | 必需的 |
| 起訴 | 完全的 |
| 坦率 | 完全的 |
我希望樞軸資料顯示如下:
| 所有者 | 必需的 | 待辦的 | 完全的 |
|---|---|---|---|
| 約翰 | 0 | 1 | 1 |
| 起訴 | 2 | 0 | 1 |
| 坦率 | 0 | 0 | 1 |
你如何撰寫 SQL 陳述句來產生它?似乎 PIVOT 表會派上用場,但只是不確定如何將其包含在陳述句中。
uj5u.com熱心網友回復:
Tim 提供的條件聚合 ( 1) 提供了更多的靈活性,并且通常會有性能提升
也就是說,這是一個 PIVOT 選項
示例或
注意: 如果您的表的列數多于顯示的列數,則需要一個子查詢來僅限制基本列。
這是一個動態版本
Declare @SQL varchar(max) = '
Select *
From ( Select [State]
,[Owner]
From YourTable ) src
Pivot (count([State]) For [State] in (' Stuff((Select Distinct ',' QuoteName([State])
From YourTable A
Order By 1 Desc
For XML Path('')),1,1,'') ') ) p
Order By Owner'
--Print @SQL
Exec(@SQL)
uj5u.com熱心網友回復:
您可以使用以下資料透視查詢:
SELECT
Owner,
COUNT(CASE WHEN Genre = 'Required' THEN 1 END) AS Required,
COUNT(CASE WHEN Genre = 'Pending' THEN 1 END) AS Pending,
COUNT(CASE WHEN Genre = 'Complete' THEN 1 END) AS Complete
FROM Testing
GROUP BY Owner;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/521484.html
標籤:sqlsql服务器
上一篇:根據字符位置分隔欄位
下一篇:varchar長度來自存盤變數?
