求行列转换问题
表t1,如下:
字段:a b c
1 a1 100
1 a2 200
2 a1 300
2 a2 400
3 a3 500
4 a4 600
形成新的表
a a1 a2 a3 a4
1 100 200
2 300 400
3 500
4 600
也就是增加列以groub by b 来定,然后形成的新表格中的a是 group by(原字段a),对应的值就是原表中的值
表t1,如下:
字段:a b c
1 a1 100
1 a2 200
2 a1 300
2 a2 400
3 a3 500
4 a4 600
形成新的表
a a1 a2 a3 a4
1 100 200
2 300 400
3 500
4 600
也就是增加列以groub by b 来定,然后形成的新表格中的a是 group by(原字段a),对应的值就是原表中的值
解决方案 »
- SQL2000中,时间日期字段,如何查询出上月数据?
- sql server咋错了?急用,大哥,大姐,帮忙吧,显身手……
- 无法在 sysdepends 中添加当前存储过程所对应的行,因为缺少该存储过程所依赖的对象 'forums_Forum_Permission_CreateUpdateDelete'。仍
- 数据库端口被屏蔽了怎么办?只能重装吗?
- 怎么实现强制还原数据库?
- 该选择sqlserver还是sybase??欢迎高手发表意见
- TOP和ORDER BY的问题,急!!!
- ★★高分求助一条SQL语句★★
- 在SQL中如何实现Oracle中的ROWNUM功能 ?
- 各位大侠救我,我有一台sql server6.5,能起动,但在本机也无法访问???
- =====================跪求一思路,请各位老大指点,实在想不出来的思路=========================
- asp + xp sp2 + sqlserver2000个人版的奇怪问题
Declare @S varchar(8000)
Set @S='Select A'
Select @S=',SUM(Case b When '''+b+''' Then c Else 0 End) As '+b
From t1 Group By b Order By b
Select @S=@S+' From t1 Group By a'
EXEC(@S)
Create Table t1
(a Int,
b Char(2),
c Int)
Insert t1 Select 1, 'a1', 100
Union All Select 1, 'a2', 200
Union All Select 2, 'a1', 300
Union All Select 2, 'a2', 400
Union All Select 3, 'a3', 500
Union All Select 4, 'a4', 600
GO
Declare @S varchar(8000)
Set @S='Select A'
Select @S=@S+',SUM(Case b When '''+b+''' Then c Else 0 End) As '+b
From t1 Group By b Order By b
Select @S=@S+' From t1 Group By a'
EXEC(@S)
GO
Drop Table t1
--Result
/*
a a1 a2 a3 a4
1 100 200 0 0
2 300 400 0 0
3 0 0 500 0
4 0 0 0 600
*/