الخطأ الذي تواجهه ينبع من الاستعلام الداخلي الذي تقوم بتنفيذه لاستخلاص بيانات محددة من الجدول Staging.SabreAssignedCrew
. يبدو أنك تحاول استخدام دالة تجميعية مثل SUM
دون تضمين الحقل UpdateID
في عبارة GROUP BY
الخاصة بك.
في الاستعلام الداخلي، أنت تستخدم دالة تجميعية SUM
لحساب عدد محدد من السجلات بناءً على شرط محدد. ومع ذلك، عندما تقوم بذلك، SQL يتوقع منك أن تحدد أيضًا كيف يجب تجميع السجلات الأخرى التي لم يتم تجميعها. هذا يتم من خلال عبارة GROUP BY
.
-
استخدام المؤشر الأخير في استكمال السلاسل31/01/2024
-
تفعيل إشعارات Firebase على أندرويد12/04/2024
-
إضافة أسماء ديناميكية باستخدام جافا سكريبت08/03/2024
بمعنى آخر، SQL يريد منك أن تحدد الحقول التي لم يتم تجميعها في دوال التجميع مثل SUM
والتي يجب عليه أن يستخدمها لتجميع البيانات. وعندما يتم ذلك، يمكنك استخدام الحقل UpdateID
في الاستعلام الخارجي دون أي مشاكل.
لتصحيح هذا الخطأ، عليك ببساطة إضافة UpdateID
إلى عبارة GROUP BY
الخاصة بك في الاستعلام الداخلي. يجب أن تبدو عبارتك مثل هذا:
sqlSELECT
StagingFlight,
StagingCabinCrew
FROM
(
SELECT
*,
Airline + CAST(FlightNumber AS VARCHAR) + Suffix AS StagingFlight,
ROW_NUMBER() OVER(PARTITION BY Airline + CAST(FlightNumber AS VARCHAR) + Suffix ORDER BY UpdateId DESC) AS StageRowNumber,
SUM(CASE WHEN CREWTYPE = 'F' THEN 1 ELSE 0 END) AS StagingCabinCrew
FROM Staging.SabreAssignedCrew
GROUP BY UpdateID -- إضافة هذا السطر
) sac;
بعد هذا التغيير، يجب أن تتمكن من تنفيذ الاستعلام بنجاح دون أي أخطاء، وستتمكن من استخدام الحقل UpdateID
بحرية في الاستعلام الخارجي دون أي مشاكل.
المزيد من المعلومات
بالطبع، دعني أواصل المقال لمساعدتك في فهم أعمق لهذا الموضوع.
بعد أن قمت بإضافة حقل UpdateID
إلى عبارة GROUP BY
في الاستعلام الداخلي، ينبغي أن تكون الاستعلامات الخاصة بك جاهزة للتشغيل بنجاح. ومع ذلك، قد تحتاج أيضًا إلى فهم بعض النقاط الأساسية حول كيفية عمل هذه العمليات في SQL.
-
دوال التجميعية (Aggregate Functions): تستخدم دوال التجميعية مثل
SUM
وCOUNT
وAVG
لحساب قيم مجمعة من البيانات في جداول قاعدة البيانات. عند استخدام دالة تجميعية، يجب عليك تحديد الحقول التي يجب تجميع البيانات بناءً عليها. -
عبارة GROUP BY: تستخدم عبارة
GROUP BY
لتجميع الصفوف في نتائج الاستعلام بناءً على قيم محددة في حقل معين. عند استخدام دوال تجميعية، يجب دائمًا تضمين عبارةGROUP BY
لتحديد كيف يجب تجميع البيانات. -
الاستعلامات الداخلية (Subqueries): في الحالة الحالية، كنت تستخدم استعلامًا داخليًا لتحديد بعض الحقول وحساب بعض القيم قبل استرجاع النتيجة النهائية. الاستعلامات الداخلية مفيدة لتنظيم الاستعلامات المعقدة وتقسيمها إلى أجزاء أصغر وأكثر إدارة.
باستخدام هذه المفاهيم الأساسية، يمكنك تجنب الأخطاء المشابهة في المستقبل وضمان أن استعلاماتك تعمل كما توقعت. من المهم أيضًا أن تتأكد من فهم بنية البيانات في جداول قاعدة البيانات الخاصة بك، بما في ذلك الحقول المتاحة والعلاقات بينها، حيث يمكن أن تؤثر فهمك لهذه العناصر على كيفية كتابة استعلاماتك وتحليلها.
في النهاية، من المهم دائمًا فحص الاستعلامات الخاصة بك بعناية والتأكد من أن جميع الحقول المستخدمة في دوال التجميعية مدرجة في عبارة GROUP BY
بشكل صحيح. باستخدام هذه النصائح، يمكنك تجنب الأخطاء وضمان حصولك على النتائج التي تتوقعها من استعلاماتك في SQL.