declare @s varchar(8000),@i int
set @s = ''
set @i = 1while @i<=31
begin
    set @s = @s + ',['+cast(@i as varchar(2))+']=sum(case when day(日期字段)='+cast(@i as varchar(2))+ then 1 else 0 end)'
    set @i = @i+1
endset @s = 'select 车牌号'+@s+' from 表 group by 车牌号'
exec(@s)

解决方案 »

  1.   

    libin_ftsafe(子陌红尘) 好快呀:)
      

  2.   

    假设楼主所查询的表的表结构如下:机动车检测表(车牌号 VARCHAR(10),检测日期 DATETIME,...)那么查询如下:declare @s varchar(8000),@i int
    set @s = ''
    set @i = 1while @i<=31
    begin
        set @s = @s + ',['+cast(@i as varchar(2))+']=sum(case when day(检测日期)='+cast(@i as varchar(2))+ then 1 else 0 end)'
        set @i = @i+1
    endset @s = 'select 车牌号'+@s+' from 机动车检测表 group by 车牌号'
    print @s    --把这一个动态组织的SQL语句打印输出来,楼主应该能看明白
    exec(@s)
      

  3.   

    libin_ftsafe(子陌红尘) 写的很清楚了,你只要把表结构替换进去就行了。再不行你就把你的表结构贴出来呀。