当前位置: 代码迷 >> Sql Server >> 请教这个查询语句应该如何写?
  详细解决方案

请教这个查询语句应该如何写?

热度:59   发布时间:2016-04-27 18:02:48.0
请问这个查询语句应该怎么写????????
表里记录着四个季度的得分,非总计,是多条记录

列名如下:

UserName --用户名
Scoring --得分
content --得分理由
Quarter --季度(1,2,3,4)


要一个结果

用户名 一季度得分 一季度得分理由 二季度得分 二季度得分理由 三季度得分 三季度得分理由 四季度得分 四季度得分理由 



------解决方案--------------------
SQL code
select t.*. ,t1.一季度得分理由,t1.二季度得分理由,t1.三季度得分理由,t1.四季度得分理由 (select userName,case when Quarter = 1 then Scoring end 一季度得分,case when Quarter = 2 then Scoring end 二季度得分,case when Quarter = 3 then Scoring end 三季度得分,case when Quarter = 4 then Scoring end 四季度得分from tb group by userName) tleft join(select UserName,case when Quarter = 1 then content end 一季度得分理由,case when Quarter = 2 then content end 二季度得分理由,case when Quarter = 3 then content end 三季度得分理由,case when Quarter = 4 then content end 四季度得分理由 from tb group by UserName) t1on t.UserName  = t1.UserName
------解决方案--------------------
可以参考
http://topic.csdn.net/u/20110926/15/4bceea0a-51a8-4abd-a4e9-230bdfd9a2cc.html
------解决方案--------------------
SELECT UserName
,MAX([一季度]) as '一季度'
,MAX([一季度得分理由]) as '一季度得分理由'
,MAX([二季度]) as '二季度'
,MAX([二季度得分理由]) as '二季度得分理由'
,MAX([三季度]) AS '三季度'
,MAX([三季度得分理由]) as '三季度得分理由'
,MAX([四季度]) AS '四季度'
,MAX([四季度得分理由]) as '四季度得分理由'
FROM (
SELECT UserName 
,CASE Season WHEN 1 THEN Scoring END as '一季度'
,CASE Season WHEN 1 THEN Content END AS '一季度得分理由'
,CASE Season WHEN 2 THEN Scoring END AS '二季度'
,CASE Season WHEN 2 THEN Content END AS '二季度得分理由'
,CASE Season WHEN 3 THEN Scoring END AS '三季度'
,CASE Season WHEN 3 THEN Content END AS '三季度得分理由'
,CASE Season WHEN 4 THEN Scoring END AS '四季度'
,CASE Season WHEN 4 THEN Content END AS '四季度得分理由'
FROM #T
) as tmp
GROUP BY UserName
------解决方案--------------------
SQL code
--你的每个用户其每个季度应该是唯一的吧?select UserName,       max(case Quarter when 1 then Scoring else 0 end)  [一季度得分],       max(case Quarter when 1 then content else '' end) [一季度得分理由],       max(case Quarter when 2 then Scoring else 0 end)  [二季度得分],       max(case Quarter when 2 then content else '' end) [二季度得分理由],       max(case Quarter when 3 then Scoring else 0 end)  [三季度得分],       max(case Quarter when 3 then content else '' end) [三季度得分理由],       max(case Quarter when 4 then Scoring else 0 end)  [四季度得分],       max(case Quarter when 4 then content else '' end) [四季度得分理由]from tbgroup by UserName--如果你的每个用户其每个季度的记录不唯一?select UserName,       sum(case Quarter when 1 then Scoring else 0 end)  [一季度得分],       max(content) [一季度得分理由],       sum(case Quarter when 2 then Scoring else 0 end)  [二季度得分],       max(content) [二季度得分理由],       sum(case Quarter when 3 then Scoring else 0 end)  [三季度得分],       max(content) [三季度得分理由],       sum(case Quarter when 4 then Scoring else 0 end)  [四季度得分],       max(content) [四季度得分理由]from tbgroup by UserName
  相关解决方案