昨天我问了一个关于复杂查询的问题,我得到了一个例子。我真的很想让它工作,但它有一个语法错误,我找不出来。请记住,这周早些时候我刚刚被介绍到CTE,所以希望这是一个简单的。
我认为我不需要在这里发布完整的代码,所以我只总结一下
with cte as (select dateadd(hour, 1, cast(cast(getdate() -1 as date) as datetime)) as midnnight),
allhours as (
select 0 as hour, midnight as timestart, dateadd(hour, 1, timestart) as timeend from cte union all
select 1 as hour, dateadd(hour, 1, midnight), dateadd(hour, 2, midnight) from cte union all
....
select 23 as hour, dateadd(hour, 23, midnight), dateadd(hour, 24, midnight) from cte union all
)
select ah.hour,...这个(...)表示不必要的代码,我将其省略以使其不那么凌乱。
但是我在SELECT 23和select ah.hour之间的括号中得到了一个语法错误:“')‘附近的语法不正确。
任何帮助都是非常感谢的。
-J
发布于 2012-09-13 20:11:16
您有一些语法错误,包括底部不需要的UNION ALL,并且allhours中的第一个SELECT引用了别名,因此请尝试执行以下操作:
;with cte as
(
select dateadd(hour, 1, cast(cast(getdate() -1 as date) as datetime)) as midnight
),
allhours as
(
select 0 as hour, midnight as timestart, dateadd(hour, 1, midnight) as timeend
from cte
union all
select 1 as hour, dateadd(hour, 1, midnight), dateadd(hour, 2, midnight)
from cte
union all
select 23 as hour, dateadd(hour, 23, midnight), dateadd(hour, 24, midnight)
from cte
)
select *
from allhours请参阅SQL Fiddle with Demo
发布于 2012-09-13 20:11:36
你应该去掉这里的最后一个Union all
hour, dateadd(hour, 23, midnight), dateadd(hour, 24, midnight) from cte union all
)
select ah.hour,... 另外,在第一行拼写午夜
https://stackoverflow.com/questions/12405498
复制相似问题