sql server行转列问题终极解决

陕电院老大

陕电院老大

2016-01-29 15:53

sql server行转列问题终极解决,sql server行转列问题终极解决
主要应用case语句来解决行转列的问题

行转列问题主要分为两类

1)简单的行转列问题:

示例表:

id  sid           course  result

1   2005001 语文     80.0
2   2005001 数学     90.0
3   2005001 英语     80.0
4   2005002 语文     56.0
5   2005002 数学     69.0
6   2005002 英语     89.0

执行

select sid,语文=isnull(sum(case course when '语文' then result end),0),
   数学=isnull(sum(case course when '数学' then result end),0),
   英语=isnull(sum(case course when '英语' then result end),0)
   from result
   group by sid
   order by sid

 

得出结果

sid           语文 数学 英语

2005001 80.0  90.0  80.0
2005002 56.0  69.0  89.0

 

2)较为复杂的行转列

表1:course

id name

1 语文
2 数学
3 英语

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/sqlserver/)


表2:result

id sid          course  result

1 2005001 语文      80.0
2 2005001 数学      90.0
3 2005001 英语      80.0
4 2005002 语文      56.0
5 2005002 数学      69.0
6 2005002 英语      89.0

 

declare @sql varchar(8000)
set @sql='select sid'
select @sql=@sql+','+course.name+'=isnull(sum(case course when '''+course.name+''' then result end),0)'
 from course order by id
set @sql=@sql+' from result group by sid order by sid'
print @sql
exec(@sql)

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/sqlserver/)

 

得出结果

sid           语文 数学 英语

2005001 80.0  90.0  80.0
2005002 56.0  69.0  89.0

http://blog.csdn.net/tthxqttzln/archive/2007/02/02/1500825.aspx

展开更多 50%)
分享

猜你喜欢

sql server行转列问题终极解决

SQLServer
sql server行转列问题终极解决

Sql Server 2000 行转列的实现(横排)

编程语言 网络编程
Sql Server 2000 行转列的实现(横排)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

table 行转列的sql详解

编程语言 网络编程
table 行转列的sql详解

SQL Server如何解决加密问题?

SQLServer
SQL Server如何解决加密问题?

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

解决Sql Server警报的疑难问题

SQLServer
解决Sql Server警报的疑难问题

Sql Server datetime问题

编程语言 网络编程
Sql Server datetime问题

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Photoshop教程:制作复古女包电商海报

Photoshop教程:制作复古女包电商海报

《以撒的结合 重生》全boss血量解析

《以撒的结合 重生》全boss血量解析
下拉加载更多内容 ↓