سؤال

لدي حقل التاريخ والوقت في جدول يسمى dbo.Traffic

أحاول تجميع بيانات حركة المرور حسب اليوم.أنا تخطط على إنشاء عرض سكيمابوند وإضافة فهرس.

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

في الجدول الأساسي ، كريتديت غير قابل للإلغاء.ومع ذلك ، بمجرد إنشاء عرض وتحويله إلى تاريخ ، يصبح نولابل.

enter image description here

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

المحلول

هذا بسبب كيفية تصرف الأعمدة المحسوبة من حيث الإبطال.التحقق من ذلك في هنا على مسن:

يحدد محرك قاعدة البيانات تلقائيا إبطال الأعمدة المحسوبة بناء على التعبيرات المستخدمة.تعتبر نتيجة معظم التعبيرات قابلة للإلغاء حتى في حالة وجود أعمدة غير قابلة للإلغاء فقط ، لأن التدفقات السفلية أو الفيضانات المحتملة ستؤدي إلى نتائج فارغة أيضا.استخدم وظيفة كولومبروبيرتي مع خاصية لوسنول للتحقيق في نولبيليتي أي عمود محسوب في جدول. يمكن تحويل التعبير غير القابل للإلغاء إلى تعبير غير قابل للإلغاء عن طريق تحديد إيسنول (تحقق من التعبير ، ثابت) ، حيث يكون الثابت قيمة غير فارغة يتم استبدالها بأي نتيجة فارغة.

يمكنك استخدام ذلك ك CreateDate.لم يكن لديك ما يدعو للقلق قيمة ثابتة كما يجب أن يكون أبدا NULL:

ISNULL(CONVERT(date, CreateDate),0) as CreateDate
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top