这基本上是一个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
请参阅带有演示的 SQL Fiddle
结果:
| USERID | CITY1 | CITY2 | CITY3 | CITY4 | CITY5 |
--------------------------------------------------
| 1 | false | false | false | true | true |
| 2 | true | false | false | true | false |
| 3 | true | false | false | false | true |