有一表是这样的:
表1:
序号 名称 数学 语文 英语 历史 地理 政治 日期
1 张无 80 90 90 80 90 90 1月
2 张无 70 90 50 80 60 80 2月
3 张无 80 90 80 60 80 60 3月
4 张六 80 90 90 80 90 90 1月
5 张六 70 90 50 80 60 80 2月
6 张六 80 90 80 60 80 60 3月
7 张起 80 90 90 80 90 90 1月
8 张起 70 90 50 80 60 80 2月
9 张起 80 90 80 60 80 60 3月
转换成如下:
序号 名称 课程 1月 2月 3月
1 张无 数学 80 70 80
2 张无 语文 90 90 90
3 张无 英语 90 50 80
4 张无 历史 80 80 60
5 张无 地理 90 60 80
6 张无 政治 90 80 60
7 张六 数学 80 70 80
8 张六 语文 90 90 90
9 张六 英语 90 50 80
10 张六 历史 80 80 60
11 张六 地理 90 60 80
12 张六 政治 90 80 60
13 张起 数学 80 70 80
14 张起 语文 90 90 90
15 张起 英语 90 50 80
16 张起 历史 80 80 60
17 张起 地理 90 60 80
18 张起 政治 90 80 60
请各位高手帮帮忙,我老板崔得急,我的QQ:37682407. 用什么都方法都行的!谢谢各位了.
SELECT *
FROM (
SELECT [日期]
,[名称]
,[课程]
,[分数]
FROM [TEST]
UNPIVOT ([分数] FOR [课程] IN ([数学],[语文],[英语],[历史],[地理],[政治])) AS unpvt
) AS tmp1
PIVOT (SUM([分数]) FOR [日期] IN ([1月], [2月])) AS pvt
如果数据不多的话,可以一一赋值!代码是这样的,我以前也遇到过,我的数据很少,所以就这样用了,你看看吧!
Code
上面的是一条数据,你有几条就写几条,数据不超过500的话还是蛮好的!呵呵!
我又下记思路,你试试吧,把得到的数据Inser到新表里。
select 名称,'数学',T1.数学,T2.数学,T3.数学
from 表1 AS T1,表1 AS T2,表1 AS T3
where T1.日期='1月' AND T2.日期='2月' AND T2.日期='2月'