我在 SQL Server Express 中有一个视图,显示每个日期汇总的总值
以下是当前视图的构建方式
SELECT
COALESCE(MACH, 'Total') AS MACH,
COALESCE(DATE, '') AS 'DATE',
SUM(VAL) AS VAL
FROM
myTable
GROUP BY
ROLLUP (MACH, DATE)
HAVING
(MACH IS NULL) OR (DATE <> '')
在 myTable 中我有这些事件:
| MACH | DATE | TIME | VAL |
| 1 | 02/05/2024 | 17:35:17 | 100 |
| 1 | 02/05/2024 | 19:35:17 | 100 |
| 2 | 02/05/2024 | 21:35:17 | 100 |
| 1 | 03/05/2024 | 04:35:17 | 100 |
| 2 | 03/05/2024 | 05:35:17 | 100 |
| 1 | 03/05/2024 | 07:35:17 | 100 |
我的视图是这样的:
| MACH | DATE | VAL |
| 1 | 02/05/2024 | 200 |
| 1 | 03/05/2024 | 200 |
| 2 | 02/05/2024 | 100 |
| 2 | 03/05/2024 | 100 |
| Total | | 600 |
我想要做的是当 myTable.TIME 在 06:00 AM 之前时将两个日期合并为一个日期。 视图应如下所示:
| MACH | DATE | VAL |
| 1 | 02/05/2024 | 300 |
| 1 | 03/05/2024 | 100 |
| 2 | 02/05/2024 | 200 |
| Total | | 600 |
可能吗? 我尝试在 ROLLUP 中使用 CASE WHEN 但没有运气,我不知道该怎么做
我认为,最好有一个内部选择来连接日期和时间并将其转换为日期时间, 然后从结果中减去 6 小时, 这意味着您计算的一天是从早上 6 点到第二天早上 6 点。 希望可以解决您的问题。