سؤال

هل هناك طريقة لاستخدام حقل محسوب في where بند؟

أريد أن أفعل شيئًا مثل

SELECT a, b, a+b as TOTAL FROM (
   select 7 as a, 8 as b FROM DUAL
   UNION ALL
   select 8 as a, 8 as b FROM DUAL
   UNION ALL
   select 0 as a, 0 as b FROM DUAL
)
WHERE TOTAL <> 0
;

لكني أحصل ORA-00904: "TOTAL": invalid identifier.

لذلك لا بد لي من استخدام

SELECT a, b, a+b as TOTAL FROM (
   select 7 as a, 8 as b FROM DUAL
   UNION ALL
   select 8 as a, 8 as b FROM DUAL
   UNION ALL
   select 0 as a, 0 as b FROM DUAL
)
WHERE a+b <> 0
;
هل كانت مفيدة؟

المحلول

منطقيا, ، ال select يعتبر CHOLSE أحد الأجزاء الأخيرة من الاستعلام الذي تم تقييمه ، وبالتالي فإن الأسماء المستعارة والأعمدة المشتقة غير متوفرة. (باستثناء order by, ، أيّ منطقيا يحدث آخر.)

استخدام جدول مشتق بعيد حول هذا:

select * 
from (SELECT a, b, a+b as TOTAL FROM ( 
           select 7 as a, 8 as b FROM DUAL 
           UNION ALL 
           select 8 as a, 8 as b FROM DUAL 
           UNION ALL 
           select 0 as a, 0 as b FROM DUAL) 
    )
WHERE TOTAL <> 0 
; 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top