Какие ключевые слова разрешено использовать в качестве имен без скобок, а какие нет?
Почему некоторые ключевые слова SQL разрешено использовать в качестве имен, а другие нет? Есть ли какой-либо шаблон для определения того, что я могу использовать и что я не могу, не пытаясь скомпилировать и получить ошибку?
У меня сложилось впечатление, что старые ключевые слова не разрешены, но разрешены новые, чтобы новые версии SQL были максимально совместимы со старыми.
В следующем примере в качестве имени без скобок можно использовать rollup, но нельзя использовать group.
if object_id('accident') is not null drop table accident
create table accident(
state varchar(50)
,city varchar(50)
,zip varchar(50)
,person varchar(50)
,id int identity(1,1)
)
insert accident(state,city,zip,person)values
('NY','Manhattan',10001,'John')
,('NY','Manhattan',10001,'John')
,('NY','Manhattan',10001,'Barbara')
;with
rollup as (
select accident.*
,lvl = grouping_id(accident.state,accident.city,accident.zip,accident.person,accident.id)
,accidents=count(1)
,people=0
from accident
group by rollup(accident.state,accident.city,accident.zip,accident.person,accident.id)
)
select * from rollup
;with
[group] as (
select accident.*
,lvl = grouping_id(accident.state,accident.city,accident.zip,accident.person,accident.id)
,accidents=count(1)
,people=0
from accident
group by rollup(accident.state,accident.city,accident.zip,accident.person,accident.id)
)
select * from [group]
Попытка использовать группу в качестве имени без скобок
;with
group as (
select accident.*
,lvl = grouping_id(accident.state,accident.city,accident.zip,accident.person,accident.id)
,accidents=count(1)
,people=0
from accident
group by rollup(accident.state,accident.city,accident.zip,accident.person,accident.id)
)
select * from group
дает ошибку:
Сообщение 156, уровень 15, состояние 1, строка 28
Неверный синтаксис рядом с ключевым словом "группа".
Сообщение 156, уровень 15, состояние 1, строка 36
Неправильный синтаксис рядом с ключевым словом "группа".
GROUP
есть в списке, аROLLUP
нет. - person PM 77-1   schedule 15.01.2014