【问题标题】:How to add new column in select statement如何在选择语句中添加新列
【发布时间】:2015-11-03 07:51:00
【问题描述】:

我想在我的选择语句中添加新列

SELECT name,line,style,operation,
7to8am,8to9am,9to10am,10to11am,11to12am,
1to2pm,2to3pm,3to4pm,4to5pm,5to6pm,6to7pm,7to8pm,8to9pm,9to10pm,10to11pm,11to12pm,
sum(7to8am+8to9am+9to10am+10to11am+11to12am+1to2pm
+2to3pm+3to4pm+4to5pm+5to6pm+6to7pm+7to8pm+
8to9pm+9to10pm+10to11pm+11to12pm) as DailyTotal,id from new_hourly GROUP By line

我想添加一个新列,显示今天的 DailyTotal 总和

这是我的sql备份文件http://www.uploadmb.com/dw.php?id=1446536983

请帮帮我!非常感谢!

【问题讨论】:

  • 1.见规范化
  • 我可以子查询什么的吗?帮助
  • 也许吧。它不会有太大帮助。但是如果没有看到样本数据集,我不能说更多。不要给我们下载的东西。只需在此处编辑您的问题(和/或 SQL 小提琴)时提供 CREATE 和 INSERT 语句(足以具有代表性)

标签: mysql visual-studio mysql-error-1064 mysql-select-db


【解决方案1】:

所以你想要一个额外的列,只添加 datee 等于当前日期的行?

在这种情况下,我会选择 case-when 表达式:

coalesce(
      sum(
        case 
          when datee = CURDATE() 
             then 7to8am+8to9am+9to10am+10to11am+11to12am+1to2pm+2to3pm+3to4pm+4to5pm+5to6pm+6to7pm+7to8pm+8to9pm+9to10pm+10to11pm+11to12pm 
             else null 
          end
         )
    ,0) as TodaysTotal

这只是对列 dateecurdate() 的行求和,如果今天根本没有行,则返回 0。

完整的 SQL:

SELECT name,line,style,operation,
7to8am,8to9am,9to10am,10to11am,11to12am,
1to2pm,2to3pm,3to4pm,4to5pm,5to6pm,6to7pm,7to8pm,8to9pm,9to10pm,10to11pm,11to12pm,
sum(7to8am+8to9am+9to10am+10to11am+11to12am+1to2pm
+2to3pm+3to4pm+4to5pm+5to6pm+6to7pm+7to8pm+
8to9pm+9to10pm+10to11pm+11to12pm) as DailyTotal,

coalesce(
  sum(
    case 
      when datee = CURDATE() 
         then 7to8am+8to9am+9to10am+10to11am+11to12am+1to2pm+2to3pm+3to4pm+4to5pm+5to6pm+6to7pm+7to8pm+8to9pm+9to10pm+10to11pm+11to12pm 
         else null 
      end
     )
,0) as TodaysTotal

,id from new_hourly GROUP By line

【讨论】:

  • 这并没有真正改善事情。它仍然返回名称、样式、操作和 id 的任意结果。
  • SELECT line,style,operation,sum(7to8am) as "7-8 A.M",sum(8to9am) as "8-9 A.M",sum(9to10am) as "9-10 A.M",sum(10to11am) as "10-11 A.M",sum(11to12am) as "11-12 A.M",sum(1to2pm) as "1-2 P.M",sum(2to3pm) as "2-3 P.M",sum(3to4pm) as "3-4 P.M",sum(4to5pm) as "4-5 P.M",sum(5to6pm) as "5-6 P.M",sum(6to7pm) as "6-7 P.M",sum(7to8pm) as "7-8 P.M",sum(8to9pm) as "8-9 P.M",sum(9to10pm) as "9-10 P.M",sum(10to11pm) as "10-11 P.M",sum(11to12pm) as "11-12 P.M" from new_hourly where datee = CURDATE() GROUP BY line; 先生,我想添加一个新列,请对所有列求和
  • 您好,首先您应该考虑按样式和操作进行分组。除此之外,您可以像上面那样做:只需sum(7to8am + 8to9am + ...) totalToday
  • 但我喜欢当前日期的总数而不是当前日期的总数,因为当我使用 sum( ....) 时,它显示的不是当天的总数
猜你喜欢
  • 2017-03-22
  • 2020-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多