我使用的是SQL Server 2005 SP3标准版,但无法创建索引视图(尝试创建聚簇索引MeasurementDataID).我知道标准版在查询中不使用索引视图,除非使用了noexpand查询提示.
错误消息 - 因为视图引用了一个未知值和可以为空的表达式的聚合
另外,为什么我需要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
Run Code Online (Sandbox Code Playgroud)
改变像这样的行
SUM(CASE WHEN CC.ColorCharID = 11 THEN [ColorCharsValue] END ) AS [Gray_a*]
Run Code Online (Sandbox Code Playgroud)
至
SUM(CASE WHEN CC.ColorCharID = 11 THEN [ColorCharsValue] ELSE 0 END ) AS [Gray_a*]
Run Code Online (Sandbox Code Playgroud)
COUNT_BIG:if允许跟踪物化行.就像非unqiue聚集索引中的"uniquifier"一样.COUNT_BIG允许大视图的32位溢出.
| 归档时间: |
|
| 查看次数: |
2112 次 |
| 最近记录: |