求助,SQL 统计写法!

编程的微小小 2013-05-29 09:23:29
各位朋友,本人求教一个SQL写法,有个表里面有,(回访日期,很好,较好,一般,接车,机电,钣金,美容,销售)等字段,除“回访日期”外其它字段类型都是"BIT" 现在想,统计一个是间段内,的(很好,较好,一般,接车,机电,钣金,美容,销售)等字段值为"true"的统计汇总,
昨天求助论坛的朋友,得出写法:
select sum(case 很好 when 1 then 1 else 0 end) as sum_很好,
sum(case 较好 when 1 then 1 else 0 end) as sum_较好,
sum(case 一般 when 1 then 1 else 0 end) as sum_一般,
sum(case 接车 when 1 then 1 else 0 end) as sum_接车,
sum(case 机电 when 1 then 1 else 0 end) as sum_机电,
sum(case 钣金 when 1 then 1 else 0 end) as sum_钣金,
sum(case 美容 when 1 then 1 else 0 end) as sum_美容,
sum(case 销售 when 1 then 1 else 0 end) as sum_销售 from table

得到的结果是:
sum_很好 sum_较好 sum_一般 sum_接车 sum_机电 sum_钣金 sum_美容 sum_销售
10 20 30 10 5 12 13 14

结果是正确的,但不符合我要的显示方式:
我想使这呈现:

评价类型 得分
SUM_很好 10
SUM_较好 20
sum_一般 30
sum_接车 10
sum_机电 5
sum_钣金 12
sum_美容 13
sum_销售 14
请问该如何实现? 谢谢!
...全文
103 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2013-05-29
  • 打赏
  • 举报
回复
 SELECT 'sum_很好' 评价类型 ,
        SUM(CASE 很好
              WHEN 1 THEN 1
              ELSE 0
            END) 得分
 FROM   [table]
 UNION ALL
 SELECT 'sum_较好' 评价类型 ,
        SUM(CASE 较好
              WHEN 1 THEN 1
              ELSE 0
            END) 得分
 FROM   [table]
 UNION ALL
 SELECT 'sum_一般' 评价类型 ,
        SUM(CASE 一般
              WHEN 1 THEN 1
              ELSE 0
            END) 得分
 FROM   [table]
 UNION ALL
 SELECT 'sum_接车' 评价类型 ,
        SUM(CASE 接车
              WHEN 1 THEN 1
              ELSE 0
            END) 得分
 FROM   [table]
 UNION ALL
 SELECT 'sum_机电' 评价类型 ,
        SUM(CASE 机电
              WHEN 1 THEN 1
              ELSE 0
            END) 得分
 FROM   [table]
 UNION ALL
 SELECT 'sum_钣金' 评价类型 ,
        SUM(CASE 钣金
              WHEN 1 THEN 1
              ELSE 0
            END) 得分
 FROM   [table]
 UNION ALL
 SELECT 'sum_美容' 评价类型 ,
        SUM(CASE 美容
              WHEN 1 THEN 1
              ELSE 0
            END) 得分
 FROM   [table]
 UNION ALL
 SELECT 'sum_销售' 评价类型 ,
        SUM(CASE 销售
              WHEN 1 THEN 1
              ELSE 0
            END) 得分
 FROM   [table]
xiaoqi7456 2013-05-29
  • 打赏
  • 举报
回复
SELECT 'sum_很好',sum(case 很好 when 1 then 1 else 0 end) FROM table 
UNION ALL
SELECT 'sum_较好',sum(case 较好 when 1 then 1 else 0 end) FROM table 
以此类推
编程的微小小 2013-05-29
  • 打赏
  • 举报
回复
很棒,谢谢朋友们!
唐诗三百首 2013-05-29
  • 打赏
  • 举报
回复
try this,

select c '评价类型',x '得分'
 from (select 
        sum(case 很好 when 1 then 1 else 0 end) as sum_很好,
        sum(case 较好 when 1 then 1 else 0 end) as sum_较好,
        sum(case 一般 when 1 then 1 else 0 end) as sum_一般,
        sum(case 接车 when 1 then 1 else 0 end) as sum_接车,
        sum(case 机电 when 1 then 1 else 0 end) as sum_机电,
        sum(case 钣金 when 1 then 1 else 0 end) as sum_钣金,
        sum(case 美容 when 1 then 1 else 0 end) as sum_美容,
        sum(case 销售 when 1 then 1 else 0 end) as sum_销售  
       from [table]) a
 unpivot
 (x for c in([sum_很好],[sum_较好],[sum_一般],[sum_接车],[sum_机电],[sum_钣金],[sum_美容],[sum_销售])) p

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧