我在大查詢中遇到了一些問題,單列無法分成 2 列。我希望帶有 8 和 10 的列索引是使用“value”列中的值稱為 Universal_id 和 project_id 的新列。
我目前的表是:
user_id | index | value
a. | 1. | 123
b. | 8. | 456
c. | 10. | 12.60
b. | 10. | 789
我希望結果是這樣的:
user_id | project_id | universal_id |
a | NA | NA
b. | 789 | 456
c. | 12.60 | NA
我試過這個,但它不起作用。我搜索了很多地方,可以找到我正在尋找的答案。任何幫助將不勝感激。先感謝您!!!
select user_id,
case when index = 8 then value else null end as universal_id,
case when index = 10 then value else null end as ps_project_id
from test_1
uj5u.com熱心網友回復:
您可以在此處使用條件聚合:
SELECT
user_id,
MAX(CASE WHEN index = 10 THEN value END) AS project_id,
MAX(CASE WHEN index = 8 THEN value END) AS universal_id
FROM test_1
GROUP BY user_id;
uj5u.com熱心網友回復:
考慮以下方法
select * from your_table
pivot (
min(value) for case index
when 10 then 'project_id'
when 8 then 'universal_id'
end in ('project_id', 'universal_id')
)
如果應用于您問題中的樣本資料 - 輸出是

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/397731.html
