Я использую SQL Server 2005 SP3 Standard Edition, но не могу создать индексированное представление (попытка создания кластерного индекса на MeasurementDataID
). Я знаю, что стандартная версия не использует индексированные представления в запросе, если не используется подсказка для запроса noexpand.SQL Server не может создавать индексированные представления
Error message -- because view reference an unknown value sum aggregate of nullable expression
Кроме того, зачем мне нужно count_big (*) ??
CREATE VIEW [CPSync].[vwGetColorChars] WITH SCHEMABINDING
AS
SELECT MC.MeasurementDataID
, SUM(CASE WHEN CC.ColorCharID = 11 THEN [ColorCharsValue] END) AS [Gray_a*]
, SUM(CASE WHEN CC.ColorCharID = 12 THEN [ColorCharsValue] END) AS [Gray_b*]
, SUM(CASE WHEN CC.ColorCharID = 4 THEN [ColorCharsValue] END) AS [ΔF]
, SUM(CASE WHEN CC.ColorCharID = 9 THEN [ColorCharsValue] END) As DotGain
, SUM(CASE WHEN CC.ColorCharID = 10 THEN [ColorCharsValue] END) As [Gray_L*]
, SUM(CASE WHEN CC.ColorCharID = 13 THEN [ColorCharsValue] END) As [G7NPDC]
, COUNT_BIG(*) AS CountBig
FROM CPSync.Measurement
INNER JOIN CPSync.MeasurementData ON Measurement.MeasurementID = MeasurementData.MeasurementID
INNER JOIN CPSync.MeasuredColorChar As MC ON MC.MeasurementDataID = MeasurementData.MeasurementDataID
INNER JOIN CPSync.ColorChar AS CC ON MC.ColorCharsID =CC.ColorCharID
Group By MC.MeasurementDataID
Я пытался, но получил ту же ошибку я изменил все операторы case, такие как , SUM (CASE WHEN CC.ColorCharID = 11 THEN [ColorCharsValue] ELSE 0 END) AS [Gray_a *] – cshah
точное сообщение об ошибке после изменения ll case statement ELSE 0 Невозможно создать кластерный индекс «IX_MeasuremnetDataID» в представлении «vwGetColorChars», потому что представление ссылается на неизвестное значение (агрегирование SUM с нулевым выражением). Рассмотрите возможность ссылки только на значения, не имеющие значения NULL в SUM. ISNULL() может быть полезна для этого. (Microsoft SQL Server, ошибка: 8662). Для получения справки нажмите: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.4053&EvtSrc=MSSQLServer&EvtID=8662&LinkId=20476 ------- ----------------------- КНОПКИ: ОК ------------------------ ------ – cshah
Использовать isnull (ColorCharsValue, 0), то? – Arvo