Top 1 value ללא פונקציה MAX, מישהו?

פורומים אפיון ופיתוח פריוריטי Top 1 value ללא פונקציה MAX, מישהו?

  • Post
    snoof123
    משתתף
    היי חברים,
    אני צריך להביא את הערך הגבוה ביותר מטבלת WARHSBAL (עמודת BALANCE)
    הפקודה שלי כזו:
    select max(balance), warhs
    from warhsbal
    where ….
    group by 2;

    הבעיה שלי שבמקרה כזה הוא הוא מביא לי את הערך הגבוה ביותר מכל מחסן, אבל אני צריך את הTOP1, ז"א את המחסן עם היתרה הכי גבוהה שעומד בתנאים של הWHERE.

    מישהו מכיר פקודה שמביאה ערך עליון (SQLI לא SQL)

מוצגות 6 תגובות – 1 עד 6 (מתוך 6 סה״כ)
  • Replies
    אלמוני
    אורח
    שלום אלעד

    מה דעתך על זה

    SELECT MAX(BALANCE) INTO :MAX FROM WARHSBAL ;
    SELECT MAX(BALANCE),WARHS FROM WARHSBAL
    GROUP BY WARHS HAVING MAX(BALANCE) = :MAX;

    snoof123
    משתתף
    קודם כל תודה על העזרה 🙂
    כרגע עדיין לא הצלחתי לעשות את זה עם HAVING, אבל זרקת רעיון מעניין אני אנסה לשחק עם זה ולראות אם זה פותר לי את הבעיה..
    אלמוני
    אורח
    זה העתק מ WINDBI

    בשאילתה הראשונה אתה מקבל את הסכום הגבוה
    בשנייה אתה מקבל גם את המחסן.

    snoof123
    משתתף
    את צודקת, אני מבין את הרעיון – פשוט הקוד שלי ארוך מאד וכנראה יש שם עוד כמה דברים שמשפיעים, זה סוג של עובד אבל אני מחר אשב על זה כמו שצריך…

    תודה רבה 🙂

    אלמוני
    אורח
    אפשר לפשט – לאחר השגת הערך MAX, אשפר לשלוף נתונים מ-WARHSBAL לפי הערך הזה
    select part, warhs
    from warhsbal
    where balance = :max

    במקרה הטוב, יש רק רשומה אחת עם היתרה הזו לכן השאילתא תחזיר רק פריט אחד. במקרה הפחות טוב, יש כמה רשומות בעלות אותו ערך…..

    snoof123
    משתתף
    תודה נעם, זה גם רעיון לא רע (אני מוסיף where warhsbal.part = :part) אז גם אם יש שתי רשומות עם אותו ערך הפיתרון שלך עדיין טוב לי. אבל כעת יש לי בעיה אחרת לכן אני לא יודע אם זה פתר לי או לא :\ (תודה לכם)
מוצגות 6 תגובות – 1 עד 6 (מתוך 6 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.