求行列转换的语句

netboygg 2014-06-11 11:31:16

在mysql里有三张表:
表一:

CREATE TABLE `projectcounts` (
`projectcountsid` int(11) NOT NULL AUTO_INCREMENT,
`projectid` int(11) NOT NULL,
`projectusersid` int(11) DEFAULT NULL,
`count1` double(8,1) DEFAULT NULL,
`count2` double(8,1) DEFAULT NULL,
`count3` double(8,1) DEFAULT NULL,
`count4` double(8,1) DEFAULT NULL,
`count8` varchar(4) DEFAULT NULL,
`countdate` datetime DEFAULT NULL,
`counttotal` double(8,2) DEFAULT NULL,
PRIMARY KEY (`projectcountsid`)
) ENGINE=InnoDB AUTO_INCREMENT=733 DEFAULT CHARSET=gb2312;

INSERT INTO `projectcounts` VALUES ('725', '1', '52', '0.5', '0.0', '0.0', '0.0', '1', '2014-06-11 00:00:00', '0.50');
INSERT INTO `projectcounts` VALUES ('726', '1', '50', '1.0', '0.0', '0.0', '0.0', '1', '2014-06-11 00:00:00', '1.00');
INSERT INTO `projectcounts` VALUES ('727', '1', '51', '1.0', '0.0', '0.0', '0.0', '1', '2014-06-11 00:00:00', '1.00');
INSERT INTO `projectcounts` VALUES ('728', '1', '53', '0.5', '0.0', '0.0', '0.0', '1', '2014-06-11 00:00:00', '0.50');
INSERT INTO `projectcounts` VALUES ('729', '2', '53', '0.5', '0.0', '0.0', '0.0', '1', '2014-06-11 00:00:00', '0.50');
INSERT INTO `projectcounts` VALUES ('730', '2', '52', '0.5', '0.0', '0.0', '0.0', '1', '2014-06-11 00:00:00', '0.50');
INSERT INTO `projectcounts` VALUES ('731', '2', '51', '35.0', '5.0', '25.0', '35.0', '1', '2014-06-11 00:00:00', '100.00');
INSERT INTO `projectcounts` VALUES ('732', '2', '50', '35.0', '5.0', '25.0', '35.0', '1', '2014-06-11 00:00:00', '100.00');

表二:

CREATE TABLE `projects` (
`projectid` int(11) NOT NULL AUTO_INCREMENT,
`projectcode` varchar(50) DEFAULT NULL,
`projectname` varchar(300) DEFAULT NULL,
`projectdate` datetime DEFAULT NULL,
`projectlvlid` int(11) DEFAULT NULL,
PRIMARY KEY (`projectid`)
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=gb2312;

INSERT INTO `projects` VALUES ('1', 'kj201201', 'xxxx开发', '2014-06-11 00:00:00', '1');
INSERT INTO `projects` VALUES ('2', 'kj201202', 'xxxxx技术研究', '2014-06-11 00:00:00', '1');

表三:

CREATE TABLE `users` (
`userid` int(11) NOT NULL AUTO_INCREMENT,
`xiongkahao` varchar(50) DEFAULT NULL,
`name` varchar(50) DEFAULT NULL,
`pass` varchar(100) DEFAULT NULL,
PRIMARY KEY (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=108 DEFAULT CHARSET=gb2312;

INSERT INTO `users` VALUES ('50', 'a', '张三', 'a');
INSERT INTO `users` VALUES ('51', 'b', '李四', 'b');
INSERT INTO `users` VALUES ('52', 'c', '王麻子', 'c');
INSERT INTO `users` VALUES ('53', 'd', '李二', 'd');

其中项目名称和用户姓名都是不固定的。projectcounts里的counttotal是该项目的每个人打的得分合计

怎么求出如下2种表格格式

格式一(按项目名称及个用户的打分列表,结果按项目名称拍序):
用户1 用户2 总分
项目1 1 100 101
项目2 0.5 100 10.5

格式二:(按项目名称及用户的是否打分列表,按项目名称排序)
用户1 用户2
项目1 已打分 未打分
项目2 未打分 已打分




非常谢谢了。。。。。分不够再加哈。
...全文
150 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwwb 2014-06-12
  • 打赏
  • 举报
回复
引用 5 楼 netboygg 的回复:
[quote=引用 4 楼 WWWWA 的回复:] http://bbs.csdn.net/topics/310045927 参考一下,动手做一下吧
试了一下,但是里面的c2不能使用纯数字和汉字,可以字母加数字,不能字母加汉字。这是为什么?[/quote] 举例说明,用MAX不行?
wwwwb 2014-06-12
  • 打赏
  • 举报
回复
自己解决更好
netboygg 2014-06-12
  • 打赏
  • 举报
回复
只不过只能按c1排序,不知道为什么不能用其他列比如id来排序。
netboygg 2014-06-12
  • 打赏
  • 举报
回复
搞定了,只不过用代码处理了一下,得到的效果如下:


netboygg 2014-06-11
  • 打赏
  • 举报
回复
引用 1 楼 WWWWA 的回复:
自己动手做一下吧,有具体问题再咨询,就是字符串累加生成SQL语句,再执行的方法,打开游标循环取值
主要就是把我难住了,急着要结果,所以跑来提问。
WWWWA 2014-06-11
  • 打赏
  • 举报
回复
自己动手做一下吧,有具体问题再咨询,就是字符串累加生成SQL语句,再执行的方法,打开游标循环取值
ACMAIN_CHM 2014-06-11
  • 打赏
  • 举报
回复
http://blog.csdn.net/acmain_chm/article/details/4283943 MySQL交叉表 在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义。http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4cf5-bc1a-e8914aaee5ab.html?96198现整理解法如下:数据样本: create table tx( id int primary key, c1 c...
netboygg 2014-06-11
  • 打赏
  • 举报
回复
引用 4 楼 WWWWA 的回复:
http://bbs.csdn.net/topics/310045927 参考一下,动手做一下吧
试了一下,但是里面的c2不能使用纯数字和汉字,可以字母加数字,不能字母加汉字。这是为什么?
WWWWA 2014-06-11
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/310045927 参考一下,动手做一下吧
netboygg 2014-06-11
  • 打赏
  • 举报
回复
顶,版主出手啊~~~~~~

56,678

社区成员

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

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