我有以下資料庫:
這只是一個更大的資料集的一個子集,它太大而無法輸入。
| ID | 代碼 | 身份標識 | 顏色 | 形狀 | 麻木的 |
|---|---|---|---|---|---|
| 101 | 24 | ? | 紅色的 | 圓圈 | 174 |
| 102 | 32 | ? | 藍色 | 正方形 | 155 |
| 102 | 32 | ? | 紫色的 | 星星 | 223 |
| 103 | 13 | 是 | 紅色的 | 正方形 | 143 |
| 103 | 13 | 是 | 綠色 | 圓圈 | 123 |
| 103 | 13 | 是 | 藍色 | 正方形 | 142 |
我需要以下結果:
| ID | 代碼 | 身份標識 | 顏色1 | 顏色2 | 顏色3 | 形狀1 | 形狀2 | 形狀3 | NUMB1 | NUMB2 | NUMB3 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 101 | 24 | ? | 紅色的 | 圓圈 | 174 | ||||||
| 102 | 32 | ? | 藍色 | 紫色的 | 正方形 | 星星 | 155 | 223 | |||
| 103 | 13 | 是 | 紅色的 | 綠色 | 藍色 | 正方形 | 圓圈 | 正方形 | 143 | 123 | 142 |
我試過了:
SELECT ID,
CODE,
IDENTIFIERS,
group_concat(COLORS) AS COLORSS,
group_concat(SHAPES) AS SHAPESS,
group_concat(NUMB) AS NUMBS
FROM (
SELECT a.ID,
a.CODE,
a.IDENTIFIERS,
a.COLORS,
a.SHAPES,
a.NUMB
FROM database AS a
) AS sub
GROUP BY ID, CODE, IDENTIFIERS
我有:
| ID | 代碼 | 身份標識 | 顏色 | 形狀 | 麻木的 |
|---|---|---|---|---|---|
| 101 | 24 | ? | 紅色的 | 圓圈 | 174 |
| 102 | 32 | ? | 藍色,紫色 | 方形,星形 | 155,223 |
| 103 | 13 | 是 | 紅、綠、藍 | 方形,圓形,方形 | 143,123,142 |
這很接近,但不完全是我想要的。任何幫助,將不勝感激。
uj5u.com熱心網友回復:
首先,您需要一種方法來確定要將行放入哪些列。為此,您可以使用ROW_NUMBER()
然后,您可以使用組合MAX(CASE)來透視資料。
WITH
sorted AS
(
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY id, code, identifiers) AS row_id
FROM
yourTable
)
SELECT
id,
code,
identifiers,
MAX(CASE WHEN row_id = 1 THEN colors END) AS colors_1,
MAX(CASE WHEN row_id = 1 THEN shapes END) AS shapes_1,
MAX(CASE WHEN row_id = 1 THEN numb END) AS numb_1,
MAX(CASE WHEN row_id = 2 THEN colors END) AS colors_2,
MAX(CASE WHEN row_id = 2 THEN shapes END) AS shapes_2,
MAX(CASE WHEN row_id = 2 THEN numb END) AS numb_2,
MAX(CASE WHEN row_id = 3 THEN colors END) AS colors_3,
MAX(CASE WHEN row_id = 3 THEN shapes END) AS shapes_3,
MAX(CASE WHEN row_id = 3 THEN numb END) AS numb_3
FROM
sorted
GROUP BY
id,
code,
identifiers
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/451671.html
下一篇:Django異步模型更新未生效
