如屏幕截图所示,我有一个包含所有工作日(如果假期= 0)和假期(如果假期= 1)的表corporate_calender。
我想选择每个工作日的日期和最后的工作日日期
即我想在第二列中使用第一列的输出
我试过下面的查询,但它给出了错误。
“无效的列名称'workingday'。”
Select Date workingday,
(select Max(Date)
from Corporate_Calendar
where holiday =0
and date>workingday)lastworkingday
from Corporate_Calendar
where holiday =0
答案 0 :(得分:2)
您的问题是您创建了一个别名并尝试在内部查询中使用,而您无法做到这一点
还有一些修复
[Date]
或更好,但使用其他名称
Select cc1.[Date] workingday,
( select Max(cc2.[Date])
from Corporate_Calendar cc2
where cc2.[holiday] = 0
and cc2.[date] > cc1.[Date]
^^^^ cant use the alias
) as lastworkingday
from Corporate_Calendar cc1
where cc1.[holiday] = 0
如果你想使用别名,你需要将其包装为子查询。
SELECT *
FROM (SELECT cc1.[Date] as workingDay
FROM Corporate_Calendar as cc1
) T
WHERE T.workingDay > 0