首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求一条复杂sql,该如何处理

2013-08-04 
求一条复杂sql需求 每个银行的前台 一共服务多少次 好评多少次 一般多少次 差评多少次姓名服务次数好评一

求一条复杂sql
需求 每个银行的前台 一共服务多少次 好评多少次 一般多少次 差评多少次    
姓名   服务次数   好评  一般  差评 
AA       200     100      50  50    

这个sql 用一条怎么做到啊?  SQL
[解决办法]
楼主没有说你的原始表结构哦

猜测是行转列问题

你这个直接按人员分组,count(1)得到服务次数,然后使用case when 分别得到好评、差评等的次数即可
[解决办法]


create table #USER (id int,name nvarchar(10))
insert into #USER values(1,'张三')
insert into #USER values(2,'李四')

create table #Assess (id int , Aname nvarchar(10))
insert into #Assess values(1,'好评')
insert into #Assess values(2,'一般')
insert into #Assess values(3,'差评')

create table #UANDA ([uid] int,aid int)
insert into #UANDA values (1,1)
insert into #UANDA values (1,2)
insert into #UANDA values (1,1)
insert into #UANDA values (1,3)
insert into #UANDA values (2,1)
insert into #UANDA values (2,1)
insert into #UANDA values (2,3)

select u.name,
服务次数=(select COUNT(1) from #UANDA where uid=u.id),
好评次数=(select COUNT(1) from #UANDA where uid=u.id and aid=1),
一般次数=(select COUNT(1) from #UANDA where uid=u.id and aid=2),
差次数=(select COUNT(1) from #UANDA where uid=u.id and aid=3)
from #USER u
INNER JOIN #UANDA ua
ON u.id=ua.uid
INNER JOIN #Assess a
on ua.aid=a.id
group by u.name,u.id

热点排行