字段一 字段二
中国 1
中国 1
美国 1
美国 1
英国 1
荷兰 1
新西兰 2
印度 2
美国 2
美国 2
美国 2
美国 2
加拿大 2我要的结果为
字段二 中国 美国 英国 荷兰 新西兰 印度 加拿大
1 2(个) 2 1 0 1 1 0
2 0 4 0 0 1 1 1
国家为动态的 不能写成静态的
中国 1
中国 1
美国 1
美国 1
英国 1
荷兰 1
新西兰 2
印度 2
美国 2
美国 2
美国 2
美国 2
加拿大 2我要的结果为
字段二 中国 美国 英国 荷兰 新西兰 印度 加拿大
1 2(个) 2 1 0 1 1 0
2 0 4 0 0 1 1 1
国家为动态的 不能写成静态的
insert # values( 'Olive', 'english ' , 60)
insert # values( 'KaKu', 'chinese ' , 80)
insert # values( 'Kitty', 'chinese ' , 90)
insert # values( 'KaKu', 'english ' , 100)
insert # values( 'Kitty', 'english ' , 98)
insert # values( 'Jeffery', 'chinese ' , 80)
insert # values( 'Dreams', 'chinese ' , 75) select * from # declare @sql varchar(8000)
set @sql = 'select subject , '
select @sql = @sql + ' sum(case name when '''+name+ '''
then score else 0 end) '+name + ', '
from (select distinct name from #) as a select @sql = left(@sql,len(@sql)-1) + ' from # group by subject ' print @sql
exec (@sql)
drop table #
给你个例子看一下,看看啊是你要的效果
这是用sum求和 和我的求记录数 差很多
create table #(name varchar(100),subject varchar(10) )
insert # values( '中国', '1 ')
insert # values( '中国', '1 ')
insert # values( '美国', '1 ')
insert # values( '美国', '1 ')
insert # values( '英国', '1 ')
insert # values( '荷兰', '1 ')
insert # values( '新西兰', '2')
insert # values( '印度', '2 ')
insert # values( '美国', '2 ')
insert # values( '美国', '2 ')
insert # values( '美国', '2 ')
insert # values( '美国', '2 ')
insert # values( '加拿大', '2 ')select * from # declare @sql varchar(8000)
set @sql = 'select subject , '
select @sql = @sql + ' SUM(case name when '''+name+ '''
then 1 else 0 end ) '+name + ', '
from (select distinct name from #) as a select @sql = left(@sql,len(@sql)-1) + ' from # group by subject ' print @sql
exec (@sql)
drop table # 改造成你的了,看看啊对的?