我試圖找出一個資料透視查詢,但首先按列分組。我的表中有以下資料:
| ID | 標簽 | 標簽1 | 標簽2 | 標簽3 | 標簽4 |
|---|---|---|---|---|---|
| 1 | A1 | 1 | 0 | 0 | 1 |
| 2 | B1 | 0 | 0 | 1 | 0 |
| 2 | C1 | 0 | 1 | 0 | 0 |
| 3 | A1 | 1 | 1 | 0 | 0 |
| 4 | B1 | 0 | 0 | 0 | 1 |
| 4 | C1 | 1 | 0 | 0 | 1 |
我正在尋找的最終結果是這樣的:
| ID | 1 | 2 |
|---|---|---|
| 1 | A1 (1,0,0,1) | |
| 2 | B1 (0,0,1,0) | C1 (0,1,0,0) |
| 3 | A1 (1,1,0,0) | |
| 4 | B1 (0,0,0,1) | C1 (1,0,0,1) |
在這個例子中,我最多有 2 列,但它可能是 N 列。我之前使用過樞軸,但是這個給其中的標簽列增加了額外的難度。
uj5u.com熱心網友回復:
根據評論,您似乎正在尋找一些動態 SQL
例子
Declare @SQL varchar(max) = '
Select *
From (
Select ID
,Item = row_number() over (partition by ID order by Label)
,Value = concat(Label,'' ('',Tag1,'','',Tag2,'','',Tag3,'','',Tag4,'')'')
From YourTable
) src
Pivot ( max(Value) for Item in ( ' stuff(( Select distinct ',' quotename(row_number() over (partition by ID order by Label))
From YourTable
For XML Path('')),1,1,'') ')) pvt
'
Exec(@SQL)
Results

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/343718.html
標籤:sql sql-server 查询语句
下一篇:計算兩個日期之間的天數
