這個問題在這里已經有了答案: 使用 SQL Server 中的“Pivot”將行轉換為列 9 個答案 2 小時前關閉。
衛生保健 :
| 一個 | 乙 | ID |
|---|---|---|
| 582 | X | 1 |
| 582 | 是 | 2 |
| 755 | 123 | 1 |
| 755 | 456 | 2 |
| 811 | 美國廣播公司 | 1 |
| 811 | 定義 | 2 |
期望結果:
| ID | 一個 | 乙 | C | D | 乙 | F |
|---|---|---|---|---|---|---|
| 1 | 582 | X | 755 | 123 | 811 | 美國廣播公司 |
| 2 | 582 | 是 | 755 | 456 | 811 | 定義 |
或者
| ID | 582 | 755 | 811 |
|---|---|---|---|
| 1 | X | 123 | 美國廣播公司 |
| 2 | 是 | 456 | 定義 |
我可以這樣做:
SELECT ID, A, B
FROM HealthCare as a
LEFT JOIN (select A as C, B as D from HealthCare where A = 755) as b
ON a.ID = b.ID
LEFT JOIN (select A as E, B as F from HealthCare where A = 811) as c
ON a.ID = c.ID
WHERE A = 582
是否有任何方法可以在沒有連接或較少連接的情況下執行此操作?
uj5u.com熱心網友回復:
如果不想用JOIN我想我們可以嘗試使用條件聚合函式來制作,嘗試在CASE WHEN運算式中添加條件。
SELECT ID,
MAX(CASE WHEN A = 582 THEN A END) 'A',
MAX(CASE WHEN A = 582 THEN B END) 'B',
MAX(CASE WHEN A = 755 THEN A END) 'C',
MAX(CASE WHEN A = 755 THEN B END) 'D',
MAX(CASE WHEN A = 582 THEN B END) 'E',
MAX(CASE WHEN A = 811 THEN B END) 'F'
FROM HealthCare
GROUP BY ID
sqlfiddle
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/482537.html
