基于Date table关联带Ident与日期的数据表生成完整年月维度结果
实现日期维度表与业务表的关联匹配
现有业务数据表
| Ident | Date |
|---|---|
| A | 1/05/2025 |
| A | 3/02/2025 |
| A | 4/15/2025 |
日期维度表(Date Table)
需包含完整的年月序列(例如2025年1-12月的所有年月记录),结构示例:
| Year | Month |
|---|---|
| 2025 | 01 |
| 2025 | 02 |
| 2025 | 03 |
| ... | ... |
| 2025 | 12 |
目标结果表
| Year | Month | Ident | Date |
|---|---|---|---|
| 2025 | 01 | A | 1/05/2025 |
| 2025 | 02 | ||
| 2025 | 03 | A | 3/02/2025 |
| 2025 | 04 | A | 4/15/2025 |
| 2025 | 05 | ||
| 2025 | 06 | ||
| 2025 | 07 | ||
| ... | ... | ... | ... |
实现方法(以SQL为例)
核心是用左连接(Left Join),以日期维度表为主表,关联业务数据表,按年份和月份匹配:
SELECT dd.Year, dd.Month, ft.Ident, ft.Date FROM DateDimension dd LEFT JOIN FactTable ft ON YEAR(ft.Date) = dd.Year AND MONTH(ft.Date) = CAST(dd.Month AS INT) -- 可选:筛选特定年份 WHERE dd.Year = 2025 ORDER BY dd.Year, dd.Month;
说明
- 左连接会保留日期维度表的所有年月记录
- 业务表中无对应年月数据时,
Ident和Date字段自动为空,完全匹配目标效果
内容的提问来源于stack exchange,提问作者user1911400
相关产品推荐
相关产品推荐

