SQL将周末日期合计为一

时间:2018-11-23 17:22:28

标签: sql sql-server database

我正在尝试使用日期名称合并周末日期。

  • 日期
  • 11/25/2018
  • 11/24/2018
  • 11/25/2018

所以我使用DATENAME并将日期转换为星期几。

  • 日期
  • 周日
  • 星期六
  • 周日

然后我可以指望他们让它看起来像这样

  • DATE。 COUNT
  • 星期日。 2
  • 星期六。 1

但是我不确定如何将它们分组,所以看起来像

  • DATE。 COUNT
  • 周末。 3

3 个答案:

答案 0 :(得分:2)

有两种方法可以做到。您会注意到COUNT版本必须返回NULL,因此COUNT()函数将不对其进行计数。您也可以使用SUM()。还有其他方法也可以做到。

DECLARE @x TABLE (mydate DATE);

INSERT INTO @x SELECT '11-25-2018'; --Sunday
INSERT INTO @x SELECT '11-24-2018'; --Saturday
INSERT INTO @x SELECT '11-25-2018'; --Sunday
INSERT INTO @x SELECT '11-23-2018'; --Friday

SELECT count(CASE WHEN DATEPART(dw, mydate) BETWEEN 2 and 6 THEN NULL ELSE 1 END ) AS CountOfWeekendDays
    ,sum(CASE WHEN DATEPART(dw, mydate) BETWEEN 2 and 6 THEN 1 ELSE 0 END) AS SumOfWeekDays
    ,sum(CASE WHEN DATEPART(dw, mydate) BETWEEN 2 and 6 THEN 0 ELSE 1 END) AS SumOfWeekendDays
FROM @x

答案 1 :(得分:1)

您将按日期名称(工作日)分组以获取必要的输出。

create table t(date_of_hire date);

insert into t values('2018-11-25');
insert into t values('2018-11-24');
insert into t values('2018-11-25');

select datename(weekday,date_of_hire) as day_of_week,count(*) as cnt
  from t
  group by datename(weekday,date_of_hire)

答案 2 :(得分:0)

获取周末的总天数

SELECT COUNT(*) as totalweekdays FROM tablename 
WHERE 
DATENAME(weekday, datecolumn) = 'Saturday'   
OR
DATENAME(weekday, datecolumn) = 'Sunday'