سؤال

لقد قمت بإنشاء طريقة عرض باستخدام الكود التالي

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 (*) إلى SELECT.

الرجاء مساعدتي في حل هذه المشكلة.

هل كانت مفيدة؟

المحلول

يخبرك الخطأ بالضبط بما عليك القيام به - إضافة count_big (*) إلى قائمة التحديد الخاصة بك.

من عند إنشاء طرق عرض مفهرسة:

إذا تم تحديد المجموعة بواسطة ، يجب أن تحتوي قائمة تحديد العرض على تعبير count_big (*) ، ولا يمكن أن يحدد تعريف العرض وجود مجموعات وجود أو مجموعة أو تجميع.

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)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top