Jef*_*eff 1 sql-server sql-server-2005 indexed-view
我意识到这是一个非常人为的例子,但我已将完整版简化为以下版本,以说明问题:
CREATE VIEW model.Appointments_Partition1
WITH SCHEMABINDING AS
SELECT CONVERT(varchar(15), AppointmentId) as Id,
ap.AppTypeId as AppointmentTypeId,
ap.Duration as DurationMinutes,
ap.AppointmentId as EncounterId,
COUNT_BIG(*) as __count_big
FROM dbo.Appointments ap
JOIN dbo.PracticeCodeTable pct ON SUBSTRING(pct.Code, 1, 1) = ap.ScheduleStatus
AND pct.ReferenceType = 'AppointmentStatus'
WHERE ap.AppTime > 0
GROUP BY CONVERT(varchar(15), AppointmentId), ap.AppTypeId, ap.Duration, ap.AppointmentId
CREATE UNIQUE CLUSTERED INDEX [IX_Appointments_Partition1_Id]
ON model.Appointments_Partition1 ([Id]);
Run Code Online (Sandbox Code Playgroud)
我明白了:
消息8668,级别16,状态0,行12
无法在视图'PracticeRepository.model.Appointments_Partition1'上创建聚簇索引'IX_Appointments_Partition1_Id',因为视图的选择列表包含有关聚合函数或分组列结果的表达式.考虑从聚合函数的结果中删除表达式或从选择列表中分组列.
我包括count_big ...那么为什么这个组出现问题?....我该如何解决这个错误?
以下是应用了一些布尔逻辑的相同错误消息:
无法在视图'...'上创建聚簇索引'...',因为视图的选择列表包含分组列上的表达式.考虑从选择列表中删除分组列上的表达式.
你需要删除CONVERTinCONVERT(varchar(15), AppointmentId)