1) 我正在创建一个日历视图,我想添加一列,检查该行中的日期是否为工作日,如果是,则填充1,否则填充0。
我有一个包含所有英国公共假日的表,在日历表中我还有一个“dayofweek”字段,其中1和7是sun和sat。
当前我正在尝试使用case语句,但是我无法运行脚本,因为我收到以下错误:
sql错误(1064):您的sql语法有错误;如果ct.dayofweek=1
或ct.dayofweek=7
或ct.dt=ph.`h'在第12行(已编辑),请检查与mysql server版本对应的手册,以获得正确的语法使用情况。这是我的脚本:
ALTER VIEW Calendar_View AS
select `calendar_table`.`dt` AS `date`,
`calendar_table`.`year` AS `year`,
`calendar_table`.`quarter` AS `quarter`,
`calendar_table`.`month` AS `month`,
`calendar_table`.`day` AS `day`,
`calendar_table`.`dayofweek` AS `dayofweek`,
`calendar_table`.`monthName` AS `monthName`,
`calendar_table`.`dayName` AS `dayName`,
`calendar_viewtable`.`week` AS `week`,
`calendar_table`.`isWeekday` AS `isWeekday`
(CASE
WHEN CT.dayofweek = `1` THEN `0'
WHEN CT.dayofweek = `7` THEN `0`
WHEN CT.dt = PH.`Holiday Date` THEN `0`
ELSE `1`
END CASE ) AS IsWorkingDay
from `calendar_table` CT, `Public_Holidays` PH
2) 我还想添加另一个字段,检查日历中的日期是否是当前日期,因此用yes,else no填充新字段(我尝试使用case语句,但这不起作用)。
1条答案
按热度按时间bq3bfh9z1#
这是您的代码:
这就是你想要的:
有两个重要的区别:
END CASE
无效语法。当您使用backticks时,您的意思是字符串是一个标识符——通常是一个列引用。没有名为
0
或者1
.查询中的另外两个问题是缺少逗号和缺少
join
条件。你的from
子句应该更像: