Проблема с созданием проиндексированного просмотра и группы по SQL Server 2008 R2

StackOverflow https://stackoverflow.com/questions/4409118

Вопрос

Я хочу создать проиндексированный вид с таким T-SQL:

    Select
   Table1_ID,
   cast(CONVERT(varchar(8),
   t2.Object_CreationDate, 112)AS DateTime) as Object_CreationDate ,
   Count_BIG(*) as ObjectTotalCount 
   from
       [dbo].Table2 t2 inner join [dbo].Table1 t1 on ...   
   Group BY
       Table1_ID, CONVERT(varchar(8), t2.Object_CreationDate, 112))

Мне нужно сделать группа по Только по на сегодняшний день колонна Object_CreationDate (тип datetime2. ).

Также я хочу установить индекс на столбцы Theme_Id А ТАКЖЕ Object_CreationDate в полученном виде.
Если я использую cast(CONVERT(varchar(8), m.Mention_CreationDate, 112)AS DateTime) В выборе - у меня проблемы с индексом в этом столбце. Потому что этот столбец (Object_CreationDate) не детерминирован.

Интересно, можно ли решить проблему.

Это было полезно?

Решение

заменять ...

CONVERT(varchar(8), t2.Object_CreationDate, 112))

... с участием

DATEADD(day, DATEDIFF(day, 0, t2.Object_CreationDate), 0)
--OR
CAST(t2.Object_CreationDate AS date)

2-й формат - только SQL Server 2008+, 1-й более общего

Это удаляет компонент времени из значения DateTime в домене даты данных даты / даты данных без каких-либо промежуточных форматов DateTime Locale

Смотрите эти ответы: Один а также Два (комментарии)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top