试一下select @sql = @sql +', sum(case when b='''+b+''' then 1 else 0 end)['+b+'] '
from A
group by b set @sql = 'select a '+@sql+' from A group by a'exec(@sql)
from A
group by b set @sql = 'select a '+@sql+' from A group by a'exec(@sql)
这语句我没学过。所以不知道错在哪里刚才领导又摧我了,大家帮下把,急死我了实在不行我只好手写字段了估计150多遍日期,还有好机个要做
set @sql=''-----上面缺了
select @sql = @sql +', sum(case when b='''+b+''' then 1 else 0 end)['+b+'] '
from AB
group by b set @sql = 'select a '+@sql+' from AB group by a'
exec(@sql)
select @sql = @sql +', sum(case when '''+b+''' then 1 else 0 end)['+b+'] 'from (select distinct B as b from A) tmpexec(@sql)
create table #
(
name varchar(20),
date datetime
)--插入测试数据
insert #
select 'a','2005-01-05' union all
select 'a','2005-01-05' union all
select 'b','2002-11-07' union all
select 'a','2003-01-01' union all
select 'b','2004-05-06'
--查询结果select name,count(*) num ,Date Date
into #tmp
from # group by Date,nameinsert #tmp
select (case name when 'a' then 'b' else 'a' end),0 ,Date from #tmpselect * from #tmp order by Date--删除临时表
drop table #
drop table #tmp
a 0 2002-11-07 00:00:00.000
b 1 2002-11-07 00:00:00.000
a 1 2003-01-01 00:00:00.000
b 0 2003-01-01 00:00:00.000
a 0 2004-05-06 00:00:00.000
b 1 2004-05-06 00:00:00.000
a 2 2005-01-05 00:00:00.000
b 0 2005-01-05 00:00:00.000