1、问题大致是这样的,有一个属性可再分的数据表需要通过查询语句把数据表整合成一个属性不可再分的临时表,例如:
原始表
-------------------
学号 分数 科目
001 78 数学
001 65 语文
002 89 数学
002 98 外语
003 87 数学
003 87 语文
003 98 外语
-------------------
整合后的临时表:
--------------------------
学号 数学 语文 外语
001 78 65 0
002 89 0 98
003 87 87 98
--------------------------2、自动排序问题。根据类别分类按照信息条目的多少来自动排序,例如:
原始表:
----------------------
ID 标题 类别
1 测试1 计算机系
2 测试2 计算机系
3 测试3 机械系
4 测试4 机械系
5 测试5 生化系
----------------------
整合后的临时表:
----------------------
类别 数量 排名
计算机系 2 1
机械系 2 1
生化系 1 2
----------------------
这两个问题都做过了,但都没弄出来,现在出分求答案或者解决思路!!
原始表
-------------------
学号 分数 科目
001 78 数学
001 65 语文
002 89 数学
002 98 外语
003 87 数学
003 87 语文
003 98 外语
-------------------
整合后的临时表:
--------------------------
学号 数学 语文 外语
001 78 65 0
002 89 0 98
003 87 87 98
--------------------------2、自动排序问题。根据类别分类按照信息条目的多少来自动排序,例如:
原始表:
----------------------
ID 标题 类别
1 测试1 计算机系
2 测试2 计算机系
3 测试3 机械系
4 测试4 机械系
5 测试5 生化系
----------------------
整合后的临时表:
----------------------
类别 数量 排名
计算机系 2 1
机械系 2 1
生化系 1 2
----------------------
这两个问题都做过了,但都没弄出来,现在出分求答案或者解决思路!!
select 学号,sum(if(科目='数学',分数,0)) as 数学,
sum(if(科目='语文',分数,0)) as 语文,
sum(if(科目='外语',分数,0)) as 外语
from tt
group by 学号
select 学号,sum(if(科目='数学',分数,0)) as 数学,
sum(if(科目='语文',分数,0)) as 语文,
sum(if(科目='外语',分数,0)) as 外语
from tt
group by 学号
select a1.lb,a1.数量,count(b1.lb)-1 from (
select lb,count(*) as 数量 from tf
group by lb) a1
left join
(
select lb,count(*) as 数量 from tf
group by lb) b1
on a1.数量<b1.数量+1
group by a1.lb,a1.数量
sum(if(科目='数学',分数,0) as 数学,
sum(if(科目='语文',分数,0) as 语文,
sum(if(科目='外语',分数,0) as 外语
from yourTable
group by 学号 如果科目不固定,你则需要利用一下存储过程或者直接在你自己的程序中来实现。一般是动态生成上面这种SQL语句或者直接控制输出格式,(直接控制输出效率上比较高)
MySQL中的ROWNUM的实现
from
(select 类别,count(*) as 数量 from 原始表 group by 类别) a
left join
(select 类别,count(*) as 数量 from 原始表 group by 类别) b
on a.数量<b.数量
group by a.类别,a.数量
order by 3
from
(select 类别,count(*) as 数量 from 原始表 group by 类别) a
left join
(select distinct 数量 from (select 类别,count(*) as 数量 from 原始表 group by 类别) b1) b
on a.数量<b.数量
group by a.类别,a.数量
order by 3
动态用SP,累计字符串得到SQL语句