ما هو الخطأ في هذا الاستعلام SQL؟
سؤال
إرجاع الاستعلام التالي "خطأ ORA-00904: SATIS: معرف غير صالح". عندما أزل الخط HAVING satis > 0
, ، إنها تعمل. ماذا علي أن أفعل؟
SELECT donem, bolge_adi, sehir_tasra "1=Ş, 2=T",
COUNT(DISTINCT mekankodu) "M.SAYISI",
SUM(b2b_dagitim + b2b_transfer - b2b_iade) satis
FROM mps_view2
WHERE donem IN ('200612','200712','200812','200912')
AND (ob IS NOT NULL OR b2b_ob IS NOT NULL)
GROUP BY donem, bolge_adi, sehir_tasra
HAVING satis > 0
ORDER BY donem, bolge_adi, sehir_tasra
المحلول
لا يمكنك استخدام الاسم المستعار في الظروف (وجود قسم من استفسارك)
جرب هذه:
SELECT donem, bolge_adi, sehir_tasra "1=Ş, 2=T",
COUNT(DISTINCT mekankodu) "M.SAYISI",
SUM(b2b_dagitim + b2b_transfer - b2b_iade) satis
FROM mps_view2
WHERE donem IN ('200612','200712','200812','200912')
AND (ob IS NOT NULL OR b2b_ob IS NOT NULL)
GROUP BY donem, bolge_adi, sehir_tasra
HAVING SUM(b2b_dagitim + b2b_transfer - b2b_iade) > 0
ORDER BY donem, bolge_adi, sehir_tasra
نصائح أخرى
من هنا:
http://download.oracle.com/docs/cd/b19306_01/server.102/b14200/statements_10002.htm.
يمكن استخدام الاسم المستعار في order_by_clause ولكن ليس من البنود الأخرى في الاستعلام.
تحتاج إلى تغييره إلى
SELECT donem, bolge_adi, sehir_tasra "1=Ş, 2=T",
COUNT(DISTINCT mekankodu) "M.SAYISI",
SUM(b2b_dagitim + b2b_transfer - b2b_iade) satis
FROM mps_view2
WHERE donem IN ('200612','200712','200812','200912')
AND (ob IS NOT NULL OR b2b_ob IS NOT NULL)
GROUP BY donem, bolge_adi, sehir_tasra
HAVING SUM(b2b_dagitim + b2b_transfer - b2b_iade) > 0
ORDER BY donem, bolge_adi, sehir_tasra
لا يمكنك استخدام الاسم المستعار في جملة له.
لا تنتمي إلى StackOverflow