簡體   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