首页 新闻 会员 周边

sql行列转换

0
悬赏园豆:200 [已关闭问题]

有一表是这样的:
表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.  用什么都方法都行的!谢谢各位了.

问题补充: 还是那sql行列转换的,我的数据有很多,总不能一条一条insert吧,请再帮帮忙!
Harlan---的主页 Harlan--- | 初学一级 | 园豆:20
提问于:2009-03-30 20:54
< >
分享
其他回答(2)
0

SELECT *
FROM (
 SELECT [日期]
    ,[名称]
    ,[课程]
    ,[分数]
 FROM [TEST]
 UNPIVOT ([分数] FOR [课程] IN ([数学],[语文],[英语],[历史],[地理],[政治])) AS unpvt
 ) AS tmp1
PIVOT (SUM([分数]) FOR [日期] IN ([1月], [2月])) AS pvt
 

Azuresong | 园豆:3565 (老鸟四级) | 2009-03-30 22:10
0

如果数据不多的话,可以一一赋值!代码是这样的,我以前也遇到过,我的数据很少,所以就这样用了,你看看吧!

 

Code

 

上面的是一条数据,你有几条就写几条,数据不超过500的话还是蛮好的!呵呵!

子夜星辰 | 园豆:1613 (小虾三级) | 2009-03-31 08:38
0

我又下记思路,你试试吧,把得到的数据Inser到新表里。

select 名称,'数学',T1.数学,T2.数学,T3.数学
from 表1 AS T1,表1 AS T2,表1 AS T3
where T1.日期='1月' AND T2.日期='2月' AND T2.日期='2月'

浑浊的云 | 园豆:210 (菜鸟二级) | 2009-04-08 12:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册