数据库表项目有: 姓名 科目 金额。
如有如下数据: 小王 包装 10
小王 焊接 20
小王 上色 20
小乐 包装 15
小乐 焊接 25
小乐 上色 25需要显示的格式: 姓名 包装 焊接 上色
小王 10 20 20
小乐 15 25 25怎么样才能实现这样的效果。因为科目是不定的,现在我使用SQL SERVER 2000数据库急待各位高手相助。
如有如下数据: 小王 包装 10
小王 焊接 20
小王 上色 20
小乐 包装 15
小乐 焊接 25
小乐 上色 25需要显示的格式: 姓名 包装 焊接 上色
小王 10 20 20
小乐 15 25 25怎么样才能实现这样的效果。因为科目是不定的,现在我使用SQL SERVER 2000数据库急待各位高手相助。
解决方案 »
- 求可序列化数据集控件!
- VC中的指针参数在delhpi中该如何写?
- 找测试“内存泄漏”和测试“网络流量”的工具
- 如何让窗口上的组件能够跟随窗口大小变化而灵活改变自己的位置?
- 100分,如何得到指定计算机名的IP?
- 请高手赐教WebBrowser的详细用法,谢谢!
- 迫在眉睫,怎样判断机器是否正连在internet上,只要答对了一定有高分现场在线等着?
- 获取当前登陆用户的用户名
- 请教dock问题,将一Form dock到一panel,怎么才能显示出标题栏(关闭按钮)??
- 请问table和quary的各自特点和优势是什么?我做数据库应该选用哪一个呢?高分相送!
- 使用PrintDBGridEh组件进行打印,如何把纸张设置为横行输出?
- 小弟刚开始学习网络编程,请各位网络高手帮忙...
DELPHI中对SQL SERVER转置矩阵的处理
from yourtable
group by 科目
set @sql=@sql+' from yourtable group by 姓名 '
exec(@sql)
from yourtable
group by 科目
set @sql=@sql+' from yourtable group by 姓名 '
exec(@sql)
--测试表
create table gdywfzj(
姓名 char(10),
科目 char(10),
金额 int)
--插入数据
insert into gdywfzj
select '小王','包装',10
union
select '小王','焊接',20
union
select '小王','上色',20
union
select '小乐','包装',15
union
select '小乐','焊接',25
union
select '小乐','上色',25 --查询
DECLARE @SQL VARCHAR(8000)
SET @SQL='SELECT 姓名 '
SELECT @SQL= @SQL+ ',MAX(CASE WHEN 科目 = ''' + 科目 + ''' THEN 金额 else 0 END) [' +科目 + ']' FROM (SELECT DISTINCT 科目 FROM gdywfzj) A
SET @SQL=@SQL+' FROM gdywfzj GROUP BY 姓名 '
EXEC (@SQL)
--删除测试环境
drop table gdywfzj /*结果
小乐 15 25 25
小王 10 20 20
*/