我有一张桌子:
userid cityid
1 4
1 5
2 4
2 1
3 1
3 5
Run Code Online (Sandbox Code Playgroud)
SQL或hive中是否有一种方法可以将其转换为如下表:
userid city1 city4 city5
1 false true true
2 true true fase
3 true false true
Run Code Online (Sandbox Code Playgroud)
我不确定是否有一个词来描述这种操作...任何帮助将不胜感激!
这基本上是一个PIVOT.您没有指定您正在使用的RDBMS,但您可以使用聚合函数和CASE语句在任何数据库中获取结果:
select userid,
max(case when cityid = 1 then 'true' else 'false' end) city1,
max(case when cityid = 2 then 'true' else 'false' end) city2,
max(case when cityid = 3 then 'true' else 'false' end) city3,
max(case when cityid = 4 then 'true' else 'false' end) city4,
max(case when cityid = 5 then 'true' else 'false' end) city5
from yourtable
group by userid
Run Code Online (Sandbox Code Playgroud)
结果:
| USERID | CITY1 | CITY2 | CITY3 | CITY4 | CITY5 |
--------------------------------------------------
| 1 | false | false | false | true | true |
| 2 | true | false | false | true | false |
| 3 | true | false | false | false | true |
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2650 次 |
| 最近记录: |