كيف أصبح التاريخ غير الفارغ لاغيا في طريقة العرض
-
21-12-2019 - |
سؤال
لدي حقل التاريخ والوقت في جدول يسمى 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
في الجدول الأساسي ، كريتديت غير قابل للإلغاء.ومع ذلك ، بمجرد إنشاء عرض وتحويله إلى تاريخ ، يصبح نولابل.
المحلول
هذا بسبب كيفية تصرف الأعمدة المحسوبة من حيث الإبطال.التحقق من ذلك في هنا على مسن:
يحدد محرك قاعدة البيانات تلقائيا إبطال الأعمدة المحسوبة بناء على التعبيرات المستخدمة.تعتبر نتيجة معظم التعبيرات قابلة للإلغاء حتى في حالة وجود أعمدة غير قابلة للإلغاء فقط ، لأن التدفقات السفلية أو الفيضانات المحتملة ستؤدي إلى نتائج فارغة أيضا.استخدم وظيفة كولومبروبيرتي مع خاصية لوسنول للتحقيق في نولبيليتي أي عمود محسوب في جدول. يمكن تحويل التعبير غير القابل للإلغاء إلى تعبير غير قابل للإلغاء عن طريق تحديد إيسنول (تحقق من التعبير ، ثابت) ، حيث يكون الثابت قيمة غير فارغة يتم استبدالها بأي نتيجة فارغة.
يمكنك استخدام ذلك ك CreateDate
.لم يكن لديك ما يدعو للقلق قيمة ثابتة كما يجب أن يكون أبدا NULL
:
ISNULL(CONVERT(date, CreateDate),0) as CreateDate