【发布时间】:2018-09-25 23:00:21
【问题描述】:
我有一个类似的架构:
[ad_id] . [name] . [valueofname]
1 . name . "brian"
1 . age . "23"
2 . job . "IT"
2 . name . "Jack"
行名包含多个值:年龄、姓名、生日、工作、年龄我想将其转换为:
[ad_id] . [name] . [age] . [birthday] . [job]
[valueofad_id][valueofname] [valueofnameofage] [valueofnameofbirth] [valueofnameofjob]
我在下面做了这个查询选择来修复它,所以在我的程序中,当name='name 或 age 或 birthday 或job'
一些ad_id 没有所有名称,正如您在架构下方看到的那样,ad_id= 1 只有name 和age,但没有job,所以我希望在找不到工作时返回NULL
[ad_id] . [name] . [valueofname]
1 . name . "brian"
1 . age . "23"
2 . job . "IT"
2 . name . "Jack"
select ad_id,
max(case when name = 'name' and ad_id='xxx' then valueofname end) as name,
max(case when name = 'age' and ad_id='xxx' then valueofname end) as age,
max(case when name = 'birthday' and ad_id='xxx' then valueofname end) as birthday,
max(case when name = 'job' and ad_id='xxx' then valueofname end) as job
from t
group by ad_id;
【问题讨论】:
-
您使用的是 MySQL 还是 Postgresql? (不要为不涉及的产品添加标签。)
-
@jarlh 我正在使用 Postgresql ,目的是它可以成为两者的模型
-
valueofname的数据类型是什么?请添加表架构。 -
投票结束,因为不清楚您的要求。
-
添加一些示例表数据和预期结果。 (作为格式化文本,而不是图像。)
标签: sql postgresql go