有表 如下 name type
张三 门前
张三 门前
张三 门前
张三 现场
张三 现场
张三 现场
张三 其他
张三 其他
张三 其他
李四 门前
李四 门前
李四 门前
李四 门前
李四 现场
李四 现场
李四 汽修
李四 其他
想通过一条sql语句 得到如下的表:name 门前 现场 汽修 其他
张三 3 3 0 3
李四 4 2 1 1
请各位高手指教,不胜感激!!!
注:能否少用 嵌套???
张三 门前
张三 门前
张三 门前
张三 现场
张三 现场
张三 现场
张三 其他
张三 其他
张三 其他
李四 门前
李四 门前
李四 门前
李四 门前
李四 现场
李四 现场
李四 汽修
李四 其他
想通过一条sql语句 得到如下的表:name 门前 现场 汽修 其他
张三 3 3 0 3
李四 4 2 1 1
请各位高手指教,不胜感激!!!
注:能否少用 嵌套???
门前=sum(case when type='门前' then 1 else 0 end),
现场=sum(case when type='现场' then 1 else 0 end),
汽修=sum(case when type='汽修' then 1 else 0 end),
其他=sum(case when type='其他' then 1 else 0 end)
from tb
group by name
sum(case when type=' 现场' then 1 else 0 end) as 现场 ,
sum(case when type=' 汽修' then 1 else 0 end) as 汽修 ,
sum(case when type=' 其他' then 1 else 0 end) as 其他
from tablename
group by name
declare @strsql varchar(8000)
select @strsql = ''
select @strsql = @strsql+',sum(case type when '''+type+''' then 1 else 0 end) '+type from 表 group by type
exec('select name,'+@strsql+' from 表 group by name ')
case when type='现场' then count(type) end as 现场,
case when type='汽修' then count(type) end as 汽修,
case when type='其他' then count(type) end as 其他
from table
group by name