سؤال

لدي عمود محسوب يسمى Cost التي ترجع المال.

أريد أن يكون لديك عمود آخر يعود (Cost * 2)، لكن هذا لا يسمح لي.

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

المحلول

لا يمكن الرجوع الأعمدة المحسوبة بأعمدة محسوبة أخرى. على الرغم من أنه يجب أن تكون قادرا على كرر التعبير الذي ترغب في الرجوع إليه. من MSDN.:

يتم حساب عمود محسوب من تعبير يمكنه استخدام أعمدة أخرى في نفس الجدول. التعبير يمكن أن يكون غير مبال اسم العمود، ثابت، وظيفة، وأي مزيج من هذه المتصلة بمشغلين واحد أو أكثر. لا يمكن أن يكون التعبير ذاكرة اسداء.

يجب أن أضيف أيضا أنه إذا كان هذا يعمل كما تريد، فسوف يقدم جميع أنواع القضايا الجديدة التي يجب عليك التعامل معها. في الوقت الحاضر، تحدث التحديثات عبر العديد من الأعمدة / الصفوف بالتوازي ومطموح.

لذلك، لن يكون من المنطقي استخدام عمود محسوب في حسابك لأنه لن يكون له قيمة ... حتى الآن. إذا كان أي شيء، فستكون تستخدم قيمة قديمة وغير محدثة.

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

نصائح أخرى

عليك تحديد ذلك ضد الأعمدة الأساسية في الجدول.

computed_column_expression هو تعبير يحدد قيمة العمود المحسوب. العمود المحسوب هو عمود افتراضي لا يتم تخزينه جسديا في الجدول، ما لم يتم وضع علامة العمود. يتم حساب العمود من تعبير يستخدم أعمدة أخرى في نفس الجدول. على سبيل المثال، يمكن أن يكون للعمود المحسوب التعريف: تكلفة السعر * الكمية. يمكن أن يكون التعبير اسم عمود غير مدحم، ثابت، وظيفة، متغير، وأي مجموعة من هذه المتصلة بمشغلين واحد أو أكثر. لا يمكن أن يكون التعبير استعلام فرعي أو يحتوي على أنواع بيانات الاسم المستعار.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top