我对SQL的学习相对较早.我制作了一些数据,其中有日期缺失的记录.我希望捕获显示缺失日期和受影响的相关部门名称的记录作为输出.
预计丢失日期的输出如下
Date DepartmentID
2023-11-03 3001
2023-11-03 4001
2023-11-06 1001
2023-11-06 2001
2023-11-07 1001
2023-11-07 2001
2023-11-07 4001
2023-11-09 4001
我的餐桌设置
Create table Departments (date date,DepartmentID int, Name text);
insert into Departments values
(to_date('1.11.23','DD.MM,YY'),1001,'SRO'),
(to_date('1.11.23','DD.MM,YY'),2001,'Drs'),
(to_date('1.11.23','DD.MM,YY'),3001,'Accounting'),
(to_date('1.11.23','DD.MM,YY'),4001,'ds'),
(to_date('2.11.23','DD.MM,YY'),1001,'SRO'),
(to_date('2.11.23','DD.MM,YY'),2001,'Drs'),
(to_date('2.11.23','DD.MM,YY'),3001,'Accounting'),
(to_date('2.11.23','DD.MM,YY'),4001,'ds'),
(to_date('3.11.23','DD.MM,YY'),1001,'SRO'),
(to_date('3.11.23','DD.MM,YY'),2001,'Drs'),
(to_date('4.11.23','DD.MM,YY'),1001,'SRO'),
(to_date('4.11.23','DD.MM,YY'),2001,'Drs'),
(to_date('4.11.23','DD.MM,YY'),3001,'Accounting'),
(to_date('4.11.23','DD.MM,YY'),4001,'ds'),
(to_date('5.11.23','DD.MM,YY'),1001,'SRO'),
(to_date('5.11.23','DD.MM,YY'),2001,'Drs'),
(to_date('5.11.23','DD.MM,YY'),3001,'Accounting'),
(to_date('5.11.23','DD.MM,YY'),4001,'ds'),
(to_date('6.11.23','DD.MM,YY'),3001,'Accounting'),
(to_date('6.11.23','DD.MM,YY'),4001,'ds'),
(to_date('7.11.23','DD.MM,YY'),3001,'Accounting'),
(to_date('8.11.23','DD.MM,YY'),1001,'SRO'),
(to_date('8.11.23','DD.MM,YY'),2001,'Drs'),
(to_date('8.11.23','DD.MM,YY'),3001,'Accounting'),
(to_date('8.11.23','DD.MM,YY'),4001,'ds'),
(to_date('9.11.23','DD.MM,YY'),1001,'SRO'),
(to_date('9.11.23','DD.MM,YY'),2001,'Drs'),
(to_date('9.11.23','DD.MM,YY'),3001,'Accounting');
到目前为止,我的逻辑是下面的SQL,同时遵循来自here的说明
with lastdate as
(select max(date) as Maxdate from Departments)
select date,
--lead(date),
select maxdate from lastdate OVER(partition by date ORDER BY date) as Next_Date
from Departments
但这会产生错误,如图所示
错误:在"SELECT"第6行或其附近出现语法错误:SELECT MAXDATE FROM 最后日期已过(按日期顺序分区... ^
这是在波斯格雷斯.让我感到困惑的事情
- 如何运行CTE并针对CTE同时运行OVER语句
- 解决这个问题的最佳方法.