【发布时间】:2021-03-19 16:04:33
【问题描述】:
我有一个销售表,记录一件商品的销售情况。简化版如下
| ID | ItemID | SaleTime |
|---|---|---|
| 1 | 1234 | 2020-12-01 12:44:22 |
| 2 | 1234 | 2020-12-01 17:12:22 |
| 3 | 1234 | 2020-12-02 12:44:22 |
| 4 | 1234 | 2020-12-04 17:12:22 |
我正在编写一个查询来计算每天售出的商品,它工作正常并给出以下结果。
| ID | ItemID | Date | Sale count |
|---|---|---|---|
| 1 | 1234 | 2020-12-01 | 2 |
| 2 | 1234 | 2020-12-02 | 1 |
| 3 | 1234 | 2020-12-04 | 1 |
我如何将没有销售的天数包含在内,如下所示。
| ID | ItemID | Date | Sale count |
|---|---|---|---|
| 1 | 1234 | 2020-12-01 | 2 |
| 2 | 1234 | 2020-12-02 | 1 |
| 3 | 1234 | 2020-12-03 | 0 |
| 4 | 1234 | 2020-12-04 | 1 |
【问题讨论】:
-
您想明确查询每个商品的每日销售额吗?首先,我建议完全避免使用
ìd列,因为技术键通常比结果中的信息更令人困惑。让item_id成为您的第一列,并首先按该列对您的查询进行排序,然后按date。在没有出售某个商品的样品的日子里要格外小心,因为可能有null值,这可能会让您错过某些结果行! -
也许
left join与coalesce()功能相结合可以为您完成一项简单的工作,但我目前正在寻找自己 -
您希望每个项目都具有相同的范围吗?固定范围?仅基于每个项目的第一个和最后一个日期的范围?
标签: sql sql-server datetime count date-arithmetic