3

次のコードを使用してビューを作成しました

CREATE VIEW dbo.two_weeks_performance WITH SCHEMABINDING
AS 
  SELECT dbo.day_dim.date_time AS Date, 
         dbo.order_dim.quantity AS Target_Acheived
    FROM dbo.day_dim 
    JOIN dbo.order_fact ON dbo.day_dim.day_id = dbo.order_fact.day_id 
    JOIN dbo.branch_dim ON dbo.order_fact.branch_id = dbo.branch_dim.branch_id 
    JOIN dbo.order_dim ON dbo.order_fact.order_id = dbo.order_dim.order_id   
GROUP BY dbo.order_dim.quantity, dbo.day_dim.date_time` 

今私が使用するとき:

CREATE UNIQUE CLUSTERED INDEX two_weeks_performance_I ON two_weeks_performance (Date)

エラーが発生しました:

選択リストがCOUNT_BIG()の正しい使用法を使用していないため、インデックスを作成できません。COUNT_BIG(*)を選択に追加することを検討してください。

この問題の解決にご協力ください。

4

1 に答える 1

6

エラーは、何をしなければならないかを正確に示しています - 選択リストに COUNT_BIG(*) を追加してください。

インデックス付きビューの作成から:

GROUP BY が指定されている場合、ビュー選択リストには COUNT_BIG(*) 式が含まれている必要があり、ビュー定義では HAVING、ROLLUP、CUBE、または GROUPING SETS を指定できません。

CREATE VIEW dbo.two_weeks_performance WITH SCHEMABINDING
AS 
  SELECT dbo.day_dim.date_time AS Date, 
         dbo.order_dim.quantity AS Target_Acheived,
         COUNT_BIG(*) as Cnt 
    FROM dbo.day_dim 
    JOIN dbo.order_fact ON dbo.day_dim.day_id = dbo.order_fact.day_id 
    JOIN dbo.branch_dim ON dbo.order_fact.branch_id = dbo.branch_dim.branch_id 
    JOIN dbo.order_dim ON dbo.order_fact.order_id = dbo.order_dim.order_id   
GROUP BY dbo.order_dim.quantity, dbo.day_dim.date_time
GO
CREATE UNIQUE CLUSTERED INDEX two_weeks_performance_I ON two_weeks_performance (Date)
于 2010-11-17T08:07:57.757 に答える