استخدم حقل محسوب في البند حيث
سؤال
هل هناك طريقة لاستخدام حقل محسوب في 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
;
لا تنتمي إلى StackOverflow