【问题标题】:sum of columns that are already sum in sqlsql中已经是总和的列的总和
【发布时间】:2013-07-15 15:43:27
【问题描述】:
SELECT DISTINCT emp_no, sum(CASE WHEN isnull(PresAbs,0)='WO' THEN 1 ELSE 0 END)  WO,
    sum(CASE WHEN isnull(PresAbs,0)='WP' THEN 1 ELSE 0 END)  WP, 
sum(CASE WHEN isnull(PresAbs,0)='HL' THEN 1 ELSE 0 END)  HL, 
sum(CASE WHEN isnull(PresAbs,0)='A' THEN 1 ELSE 0 END)  A,**sum(WO+WP+HL+A)** 
from TRN_ATTN072013 WHERE CONVERT(varchar,Tdate,112)>'20130712' and CONVERT(varchar,Tdate,112)<'20130717' 
group by emp_no
ORDER BY emp_no

我想总结这些列 WO,WP,HL,A 我如何总结这些列

【问题讨论】:

  • 它是哪个 RDBMS? MySQL 或 SQL SERVER 或 RDBMS 不可知论?

标签: c# mysql sql sql-server database


【解决方案1】:

如果这是SQL server,那么您可以使用CTE

with tablesum as
(
  SELECT DISTINCT emp_no, sum(CASE WHEN isnull(PresAbs,0)='WO' THEN 1 ELSE 0 END)  WO,
                          sum(CASE WHEN isnull(PresAbs,0)='WP' THEN 1 ELSE 0 END)  WP,
                          sum(CASE WHEN isnull(PresAbs,0)='HL' THEN 1 ELSE 0 END)  HL,
                          sum(CASE WHEN isnull(PresAbs,0)='A' THEN 1 ELSE 0 END)  A
  from TRN_ATTN072013 
  WHERE CONVERT(varchar,Tdate,112) > '20130712' and CONVERT(varchar,Tdate,112) < '20130717'
  group by emp_no      
)

select t.*, t.WO + t.WP + t.HL + t.A
from tablesum t
order by t.emp_no

【讨论】:

  • 这是各种错误。在 CTE 中订购?没有分组依据的 SUM?
  • 是的,抱歉有点仓促。
  • 你为什么要按聚合的内容进行分组?为什么不将底部部分更改为 select t.*, t.WO + t.WP + t.HL + t.A from tablesum t order by t.emp_no
  • 好的,看起来更好。来自我的 +1。
【解决方案2】:

在 mysql 中 ;)

SELECT emp_no, wo+wp+hl+A FROM 
(SELECT DISTINCT emp_no, sum(CASE WHEN isnull(PresAbs,0)='WO' THEN 1 ELSE 0 END)  WO,
sum(CASE WHEN isnull(PresAbs,0)='WP' THEN 1 ELSE 0 END)  WP, 
sum(CASE WHEN isnull(PresAbs,0)='HL' THEN 1 ELSE 0 END)  HL, 
sum(CASE WHEN isnull(PresAbs,0)='A' THEN 1 ELSE 0 END)  A,**sum(WO+WP+HL+A)** 
from TRN_ATTN072013 WHERE CONVERT(varchar,Tdate,112)>'20130712' and   CONVERT(varchar,Tdate,112)<'20130717' 
group by emp_no
ORDER BY emp_no) AS SUB_Q;

【讨论】:

    猜你喜欢
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多