SQL Server索引视图错误

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 ...那么为什么这个组出现问题?....我该如何解决这个错误?

Rem*_*anu 5

以下是应用了一些布尔逻辑的相同错误消息:

无法在视图'...'上创建聚簇索引'...',因为视图的选择列表包含分组列上的表达式.考虑从选择列表中删除分组列上的表达式.

你需要删除CONVERTinCONVERT(varchar(15), AppointmentId)