【发布时间】:2022-01-03 14:50:25
【问题描述】:
我正在尝试从货币假日表转换嵌套层次结构,以选择 2022 年的特定日期。
解释示例源表:
+---------+---------------+---------------+-------------------------+------------+-----------+-------------+
| hol_ccy | holiday | date_type | hol_dt | hol_day_no | calloc_id | base_hol_id |
+---------+---------------+---------------+-------------------------+------------+-----------+-------------+
| CHF | Good Friday | Date | 2022-04-15 00:00:00.000 | 0 | 9169 | NULL |
+---------+---------------+---------------+-------------------------+------------+-----------+-------------+
| CHF | Easter Monday | Ordinal Based | 1899-12-30 00:00:00.000 | 3 | 9188 | 9169 |
+---------+---------------+---------------+-------------------------+------------+-----------+-------------+
| CHF | Easter | Ordinal Based | 1899-12-30 00:00:00.000 | 2 | 9189 | 9169 |
+---------+---------------+---------------+-------------------------+------------+-----------+-------------+
| CHF | Ascension | Ordinal Based | 1899-12-30 00:00:00.000 | 39 | 9190 | 9189 |
+---------+---------------+---------------+-------------------------+------------+-----------+-------------+
| CHF | Whit Monday | Ordinal Based | 1899-12-30 00:00:00.000 | 50 | 9191 | 9189 |
+---------+---------------+---------------+-------------------------+------------+-----------+-------------+
期望的输出:
CCY HOLIDAY DATE
CHF Good Friday 2022-04-15 00:00:00.000
CHF Easter Monday 2022-04-18 00:00:00.000
CHF Easter 2022-04-17 00:00:00.000
CHF Ascension 2022-05-26 00:00:00.000
CHF Whit Monday 2022-06-06 00:00:00.000
第 1 行是每年输入数据库的给定事实。给定为 date_type: date
第 2 行和第 3 行基于第 1 行。每行都将 hol_day_no 的值添加到第 1 行的 hol_dt(日期)。这种关系在 calloc_id 和 base_hol_id 列中进行了描述
第 4 行和第 5 行基于第 3 行。
我不知道如何处理 SQL 中基于序数的日期类型的嵌套。 任何指针将不胜感激。
【问题讨论】:
-
也许这是一个人为的例子,但是如果升天是复活节后 39 天,而复活节是耶稣受难日后 2 天,那么耶稣受难日之后不是升天 (39+2)d 吗?也就是说,为什么需要嵌套层次结构?
标签: sql-server