求助~~!想要一个SQL语句。

xch2671774 2010-12-08 02:16:00
数据库中有如下数据结构

表 DATAUNIT
ID NAME
1 标题
2 姓名
3 性别
4 电话

表 TASK
ID TS SETS PAGE DATAUNIT_ID VALUES
1 1 0 1 1 第一套
2 1 1 1 2 张三
3 1 1 1 3 男
5 1 2 1 2 李四
6 1 2 1 3 女
7 1 2 2 4 112
8 1 3 1 2 王五
9 1 3 1 3 男
10 1 3 2 4 119

求SQL生成如下结构
SETS 标题 姓名 性别 电话
1 第一套 张三 男 NULL
2 第一套 李四 女 112
3 第一套 王五 男 119


*说明:
表TASK中DATAUNIT_ID中存放的是DATAUNIT中的对应ID
...全文
79 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
WWWWA 2010-12-09
  • 打赏
  • 举报
回复
SELECT sets,MAX(newv),MAX(IF(id1=2,`VALUES`,'')) AS 姓名,
MAX(IF(id1=3,`VALUES`,'')) AS 性别,
MAX(IF(id1=4,`VALUES`,'')) AS 电话
FROM (SELECT a.*,b.id AS id1,c.values AS newv FROM TASK a LEFT JOIN DATAUNIT b ON a.DATAUNIT_ID=b.id
LEFT JOIN
(SELECT * FROM task WHERE SETS=0) c ON a.ts=c.ts
) a
WHERE sets<>0
GROUP BY sets ;
ACMAIN_CHM 2010-12-08
  • 打赏
  • 举报
回复
2 第一套 李四 女 112

这条记录中 第一套 是根据什么来的?
mysqldbd 2010-12-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wwwwb 的回复:]

SELECT sets,MAX(newv),MAX(IF(id1=2,`VALUES`,'')) AS 姓名,
MAX(IF(id1=3,`VALUES`,'')) AS 性别,
MAX(IF(id1=4,`VALUES`,'')) AS 电话
FROM (SELECT a.*,b.id AS id1,c.values AS newv FROM TASK a LEFT JOIN DATAU……
[/Quote]

支持,支持这种写法!
lxq19851204 2010-12-08
  • 打赏
  • 举报
回复
WWWWB太牛了,我也要个动态列转行的例子。我去开个帖。
wwwwb 2010-12-08
  • 打赏
  • 举报
回复
SELECT sets,MAX(newv),MAX(IF(id1=2,`VALUES`,'')) AS 姓名,
MAX(IF(id1=3,`VALUES`,'')) AS 性别,
MAX(IF(id1=4,`VALUES`,'')) AS 电话
FROM (SELECT a.*,b.id AS id1,c.values AS newv FROM TASK a LEFT JOIN DATAUNIT b ON a.DATAUNIT_ID=b.id
LEFT JOIN
(SELECT * FROM task WHERE ts=1 LIMIT 1) c ON a.ts=c.ts
) a
WHERE sets<>0
GROUP BY sets ;

动态要用SP累加生成SQL语句,再动态执行

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧