sql纵表转横表
项目上有一个需求(例子):
用户表
user{
id,
name,
workCode
}
id name workCode
1 张三 WC1001
2 李四 WC1002
工作信息表
work{
id,
name,
workCode,
workTimeSun
}
id name workCode workTimeSun
1 厨师 WC1001 3
2 司机 WC1001 2
3 厨师 WC1002 5
5 司机 WC1002 6
用Java代码很好实现,取出某个人的所有工作,然后用一个vo实体类保存拼接起来。但是用一个sql取出,就必须把工作名称和工作时间都用一个字段显示出来,如下:
SELECT USER.NAME, MAX( CASE WORK.workCode WHEN 'WC1001' THEN WORK.workTimeSun ELSE '' END ) AS workTimeValue1, MAX( CASE WORK.workCode WHEN 'WC1002' THEN WORK.workTimeSun ELSE '' END ) AS workTimeValue2 FROM USER LEFT JOIN WORK ON WORK.workCode = USER.workCode GROUP BY USER.ID
参考博客:
Mysql 纵表转换为横表_mysql纵表转横表-CSDN博客