Вопрос

У меня есть поле DateTime в таблице, называемой dbo.Traffic

Я пытаюсь объединить данные трафика по дням.Я строгаю по созданию Schemabound View и добавление индекса.

CREATE VIEW [dbo].[vwTraffic] WITH SCHEMABINDING AS

SELECT  CONVERT(date, CreateDate) as CreateDate, Circuit, Fuseaction,     
   COUNT(CreateDate) AS activity
FROM    dbo.Traffic WITH (NOLOCK)
GROUP BY CONVERT(date, CreateDate), Circuit, Fuseaction
.

В базовой таблице создание не сочтена.Однако, как только я создаю вид, и преобразую его на дату, он становится отнурительным.

Введите описание изображения здесь

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

Решение

Это из-за того, как вычисляемые столбцы ведут себя с точки зрения Nullability. Проверьте это в Здесь на MSDN :

Двигатель базы данных автоматически определяет Nulleability вычисляемых столбцов на основе используемых выражений. Результатом большинства выражений считается NULLBAL, даже если присутствуют только ненужные колонны, потому что возможные поощрения или переполнения будут вызывать нулевые результаты. Используйте функцию ColumnProperty с свойством Procernnull для изучения Nullability любой компьютерной колонки в таблице. Выражение, которое сочленемо, может быть превращено в ненумеруемое, указав isnull (check_expression, constance), где константу - это ненужное значение, замещенное любому нулевому результату .

Вы можете использовать это в качестве вашего CreateDate. Вам не нужно беспокоиться о постоянном значении, так как у вас никогда не должна иметь NULL:

ISNULL(CONVERT(date, CreateDate),0) as CreateDate
.

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