【发布时间】:2022-07-18 22:39:14
【问题描述】:
我正在尝试在 SQL 中创建一个表,在其中反映特定月份所有天的数据。
例如,即使特定日期没有销售交易,特定员工的日期仍应反映在表格中。
问题的场景。我正在处理此示例的以下日期:2022 年 1 月 1 日、2 日、3 日和 4 日。
原始数据如下:
| Name | Date | SaleAmount |
|---|---|---|
| John | 2022-01-01 | 154875 |
| John | 2022-01-03 | 598752 |
如上所示,我们只有第 1 次和第 3 次的数据。
结果应如下所示:
| Name | Date | SaleAmount |
|---|---|---|
| John | 2022-01-01 | 154875 |
| John | 2022-01-02 | NULL |
| John | 2022-01-03 | 598752 |
| John | 2022-01-04 | NULL |
如上所示,即使那几天没有活动,也应包括第 2 天和第 4 天。
我目前正在尝试什么:
我有一个主日期表,它被用作事务表上的 RIGHT JOIN。但是,我的表的最终结果如下:
| Name | Date | SaleAmount |
|---|---|---|
| John | 2022-01-01 | 154875 |
| NULL | 2022-01-02 | NULL |
| John | 2022-01-03 | 598752 |
| NULL | 2022-01-04 | NULL |
如上所示,“名称”字段返回为 NULL。但是,SaleAmount 应该反映 NULL 以指示没有交易发生。
我将不胜感激。
【问题讨论】:
-
您希望在 1 月 2 日为 每一位 员工在其他任何一天至少进行过一次交易吗?或者该集合是否已明确过滤到单个员工?
-
嗨@AaronBertrand。是的,每个员工都会在 1 月 2 日排队。
标签: sql sql-server database tsql azure-sql-database