数据库表项目有: 姓名 科目 金额。
如有如下数据: 小王 包装 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数据库急待各位高手相助。
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
*/