![](/img/trans.png)
[英]How to create a column in my Date Dimension table that will classify the Date column into this specific logic?
[英]How can I create a week group column in my Date Dimension Table based on this specific logic?
我正在使用 SQL Server 2014,我的數據庫中有一個名為 Date Dimension 的表。
它有一個名為“日期”的列,其中包含從 2013 年 1 月 1 日到 2025 年 12 月 31 日的每日日期(下面給出的列的摘錄):
Date
2022-01-01
2022-01-02
2022-01-03
2022-01-04
2022-01-05
2022-01-06
2022-01-07
2022-01-09
...
2022-01-30
2022-01-31
...
我需要根據以下邏輯在日期維度表中創建一個名為“HR_WeekGroup”的新列:
WeekGroup 將從星期一開始,在星期日結束。 WeekGroups 將分別為每個月計算。 也就是說,如果一個月的第一天是星期六,則該周的 WeekGroup 將僅包含 2 天(星期六和星期日),如果該月的最后一天是星期一,則 weekGroup 將僅包含 1 天(周一)。
這是我所追求的(基於 2022 年 1 月):
Date HR_WeekGroup
2022-01-01 Wk 01Jan2022-02Jan2022
2022-01-02 Wk 01Jan2022-02Jan2022
2022-01-03 Wk 03Jan2022-09Jan2022
2022-01-04 Wk 03Jan2022-09Jan2022
2022-01-05 Wk 03Jan2022-09Jan2022
2022-01-06 Wk 03Jan2022-09Jan2022
2022-01-07 Wk 03Jan2022-09Jan2022
2022-01-09 Wk 03Jan2022-09Jan2022
... ...
2022-01-30 Wk 24Jan2022-30Jan2022
2022-01-31 Wk 31Jan2022
...
允許我創建此列的 T-SQL 代碼是什么?
我查看了以下頁面,但不知道如何將這些示例應用於我的具體問題。
Set DateFirst 1;
with cte as (
select
Date_Column,
MONTH(Date_Column) as [MONTH],
DAY(Date_Column) as [DAY],
Min(Date_Column) OVER (Partition by DATEPART(week,Date_Column), MONTH(Date_Column) ) as [MinDateWeekGroup],
Max(Date_Column) OVER (Partition by DATEPART(week,Date_Column), MONTH(Date_Column) ) as [MaxDateWeekGroup]
from date_dimension
)
select
Date_Column,
case when [MinDateWeekGroup] = [MaxDateWeekGroup]
THEN CONCAT('Wk ',
Right('0'+Convert(varchar(10), Day([MinDateWeekGroup])),2),
Convert(char(3), [MinDateWeekGroup], 0),Convert(char(4),YEAR([MinDateWeekGroup])) )
ELSE
CONCAT('Wk ',
Right('0'+Convert(varchar(10), Day([MinDateWeekGroup])),2),
Convert(char(3), [MinDateWeekGroup], 0),Convert(char(4),YEAR([MinDateWeekGroup])),
'-',
Right('0'+Convert(varchar(10), Day([MaxDateWeekGroup])),2),
Convert(char(3), [MaxDateWeekGroup], 0),Convert(char(4),YEAR([MaxDateWeekGroup]))
)
END as [HR_WeekGroup]
from cte
order by Date_Column
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.