繁体   English   中英

SQL按星期几分组

[英]SQL Group by Day of Week

使用SQL Server2012。我有一个具有两个字段的视图-机器日期和总分钟数。 该视图仅显示前一周的数据-效果很好。 然后,我使用下面的SQL基于此视图创建另一个视图:

SELECT        
    CASE WHEN DATENAME(dw, MachineMidLineDate) = 'Sunday' THEN [Total Mins] END AS Sun, 
    CASE WHEN DATENAME(dw, MachineMidLineDate) = 'Monday' THEN [Total Mins] END AS Mon, 
    CASE WHEN DATENAME(dw, MachineMidLineDate) = 'Tuesday' THEN [Total Mins] END AS Tues, 
    CASE WHEN DATENAME(dw, MachineMidLineDate) = 'Wednesday' THEN [Total Mins] END AS Wed, 
    CASE WHEN DATENAME(dw, MachineMidLineDate) = 'Thursday' THEN [Total Mins] END AS Thursday, 
    CASE WHEN DATENAME(dw, MachineMidLineDate) = 'Friday' THEN [Total Mins] END AS Friday, 
    CASE WHEN DATENAME(dw, MachineMidLineDate) = 'Saturday' THEN [Total Mins] END AS Sat
FROM
    dbo.vw_Machine_Minutes_Overview

但是,结果不是一行,它们随着一周的每一天而增加,即

Sun    Mon   Tues   Wed  Thurs  Fri   Sat
10     
       15
              25
                    20
                          21
                                12

但是我需要结果显示如下:

Sun    Mon   Tues   Wed  Thurs  Fri   Sat
10     15     25    20    21    12

我要去哪里错了?

您要聚合:

SELECT SUM(CASE WHEN DATENAME(dw, MachineMidLineDate) = 'Sunday' THEN [Total Mins] END) AS Sun,
       SUM(CASE WHEN DATENAME(dw, MachineMidLineDate) = 'Monday' THEN [Total Mins] END) AS Mon,
      . . . 
FROM dbo.vw_Machine_Minutes_Overview;

关于使用pviot的评论是另一种实现方式:

工作示例: http : //data.stackexchange.com/stackoverflow/revision/749735/930554/pivot-data-by-day-of-week-from-date-field

我发现语法有点混乱,但这应该可以工作:

select *
from 
(
select  datepart(dw,[MachineMidLineDate]) as DayOfWeek, [Total Mins]
  from #vw_Machine_Minutes_Overview 
) src
pivot
(
  sum([Total Mins])
  for DayOfWeek in ([1], [2], [3],[4],[5],[6],[7])
) piv;

datepart(dw,[MachineMidLineDate])部分返回表示星期几的1到7之间的数字,该数字用于指定[1],[2],[3]...部分中的列。查询。

datepart: https : //docs.microsoft.com/zh-cn/sql/t-sql/functions/datepart-transact-sql

枢纽: https//technet.microsoft.com/zh-CN/library/ms177410(v = sql.105).aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM