דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. sql sever (כותרת זמנית: אם הייתי יודע לנסח את הכותרת בתמצות הייתי כנראה מוצא תשובות מועילות בגוגל...)

sql sever (כותרת זמנית: אם הייתי יודע לנסח את הכותרת בתמצות הייתי כנראה מוצא תשובות מועילות בגוגל...)

מתוזמן נעוץ נעול הועבר תכנות
9 פוסטים 5 כותבים 226 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • M מנותק
    M מנותק
    mekev
    כתב ב נערך לאחרונה על ידי mekev
    #1

    sql sever

    יש לי view שנותן מפרט וסטטוס
    העמודה 'סטטוס' לא מכילה ערך אמיתי מטבלה
    אלא עמודה שמחזירה תוצאה בודדת של סטטוס נוכחי באמצעות CASE WHEN

    אני מעוניין לקבל סיכום של כמה הזמנות יש לי כרגע בכל סטטוס
    את המידע הזה אני שולף בפשטות באמצעות COUNT / GROUP BY על העמודה 'סטטוס'

    אממה
    אני מקבל רק את הסיכום של הסטטוסים המופיעים הקיימים ברגע זה

    בעוד שאני מעוניין לקבל תוצאה של כל האפשריות בסטטוסים,
    ובמידה ואין הזמנה תואמת שיופיע בכמות 0 (כעת השורה לא מופיעה כלל)

    דוגמא:
    (אני מעוניין לקבל גם את התוצאה של 'צפון' = 0)

    CREATE TABLE Table_test (
    FirstName varchar(255),
    LastName varchar(255),   
    City varchar(255)
    );
        
    INSERT INTO Table_test
    ([FirstName], [LastName], [City])
    VALUES
    ('חיים', 'כהן', 'ירושלים'),
    ('שלמה', 'פרידמן', 'ירושלים'),
    ('יעקב', 'שמואלי', 'בני ברק'),
    ('יצחק', 'אבינו', 'נתיבות'),
    ('אלימלך', 'צוקרמן', 'נתיבות') 
    ;
    
    
    select COUNT(v_view.t_status) as 'namber' ,v_view.t_status as 'status' 
    from
    ( select tt.FirstName
    ,tt.LastName
    ,tt.City
    ,CASE
    WHEN tt.City = 'ירושלים' THEN 'מרכז'
    WHEN tt.City = 'בני ברק' THEN 'גוש דן'
    WHEN tt.City = 'נתיבות' THEN 'דרום'
    WHEN tt.City = 'רכסים' THEN 'צפון'
    ELSE '' 
    END as t_status
    from Table_test tt
    ) v_view
    GROUP BY t_status 
    
    
    dovidD ל 2 תגובות תגובה אחרונה
    1
    • ל מנותק
      ל מנותק
      לי ראש
      כתב ב נערך לאחרונה על ידי לי ראש
      #2

      תוכל להציג את התוצאה של השאילתא הזו?

      צדיק תמיםצ תגובה 1 תגובה אחרונה
      0
      • צדיק תמיםצ מנותק
        צדיק תמיםצ מנותק
        צדיק תמים
        השיב ללי ראש ב נערך לאחרונה על ידי
        #3

        @לי-ראש
        ca1dc8bf-b0b2-4d4a-bc7b-25fe925bb614-image.png
        https://sqliteonline.com

        Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
        טיפים

        תגובה 1 תגובה אחרונה
        3
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          השיב לmekev ב נערך לאחרונה על ידי
          #4

          @mekev הכי פשוט זה לייחד טבלה לסטטוסים,
          זה גם הדרך הנכונה וההגיונית, כי אם הסטטוסים הם רשימה שרירותית שבכל מקרה אתה רוצה לראות,
          מקומה של כזו רשימה היא טבלה ולא שאילתה!
          בטבלה אתה עושה עמודת סטטוס ועמודת עיר ומתקיים שמה קשר רבים רבים,
          ובשאילתה אתה מחבר בRIGHT JOIN ביניהם ואז אתה תמיד מקבל שורת סטטוס גם אם אין בה כלום.

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          M תגובה 1 תגובה אחרונה
          4
          • ל מנותק
            ל מנותק
            לי ראש
            השיב לmekev ב נערך לאחרונה על ידי
            #5

            @mekev
            אגב, אתה יכול לפשט קצת את השאילתה שלך:

            SELECT COUNT(City) Number,
            CASE
            WHEN City = 'ירושלים' THEN 'מרכז'
            WHEN City = 'בני ברק' THEN 'גוש דן'
            WHEN City = 'נתיבות' THEN 'דרום'
            WHEN City = 'רכסים' THEN 'צפון'
            END Status
            FROM Table_test
            GROUP BY status
            
            תגובה 1 תגובה אחרונה
            0
            • M מנותק
              M מנותק
              mekev
              השיב לdovid ב נערך לאחרונה על ידי mekev
              #6

              @dovid כתב בsql sever (כותרת זמנית: אם הייתי יודע לנסח את הכותרת בתמצות הייתי כנראה מוצא תשובות מועילות בגוגל...):

              כי אם הסטטוסים הם רשימה שרירותית שבכל מקרה אתה רוצה לראות,
              מקומה של כזו רשימה היא טבלה ולא שאילתה!
              בטבלה אתה עושה עמודת סטטוס ועמודת עיר ומתקיים שמה קשר רבים רבים,
              ובשאילתה אתה מחבר בRIGHT JOIN ביניהם ואז אתה תמיד מקבל שורת סטטוס גם אם אין בה כלום

              זהו,
              שהסטטוסים זה רשימה שרירותית ידוע מראש
              אבל התנאים ב CASE WHEN זה מניפולציות על המידע, ולא ערך שניתן להצלבה

              (דוגמא: מעבדת מחשבים המשווקת מחשבים ושרתים הבנויים בהתאמה אישית
              אני מעוניין לדעת מה סטטוס ההזמנה
              בתנאי CASE WHEN יש לי משהו בסגנון:
              אם עמודת תאריך התקנת המעבד null - הסטטוס: ממתין למעבד
              אם עמודת תאריך התקנת הלוח אם null - הסטטוס: ממתין ללוח אם
              אם עמודת תאריך קבלת המארז null - הסטטוס: ממתין למארז
              וכו וכו' )

              [הדוגמא הנוכחית באה להמחיש את מקור התנאי, ולא שאכן באמת ניתן להכריז על הסטטוס של הכנת מחשב לפי הנ"ל
              במקרה האמיתי, מדובר על סביבת יצור עם סדר תהליכים קבוע, כך שאני יודע בבירור שלא ניתן להקדים שלב לפני השני]

              dovidD תגובה 1 תגובה אחרונה
              0
              • dovidD מנותק
                dovidD מנותק
                dovid ניהול
                השיב לmekev ב נערך לאחרונה על ידי
                #7

                @mekev אז עליך להשאיר את הCASE על מכונו, ועם זאת לחבר לו RIGHT JOIN לטבלת סטטוסים.
                משהו כזה:

                select 
                 SUM(IIF(tt.City IS NULL, 0, 1)) as number
                 ,Table_Status.[Name]
                ,CASE
                WHEN tt.City = 'ירושלים' THEN 'מרכז'
                WHEN tt.City = 'בני ברק' THEN 'גוש דן'
                WHEN tt.City = 'נתיבות' THEN 'דרום'
                WHEN tt.City = 'רכסים' THEN 'צפון'
                ELSE '' 
                END as t_status
                from Table_test tt  RIGHT JOIN Table_Status ON t_status = Table_Status.[Name]
                GROUP BY Table_Status.[Name] 
                

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                M תגובה 1 תגובה אחרונה
                2
                • M מנותק
                  M מנותק
                  mekev
                  השיב לdovid ב נערך לאחרונה על ידי
                  #8

                  @dovid
                  הרעיון עובד מעולה
                  (לתועלת המעתיק - יש לקונן את הנ"ל, אחרת לא ניתן לגשת ב JOIN ישירות לעמודה המחושבת)

                  נושא משני הקשור ישירות לפה
                  ולכאו' לא אמור להיות נושא נפרד

                  איך הייתי אמור לחפש דבר כזה בגוגל
                  מה הייתי אמור לרשום בחיפוש?

                  תגובה 1 תגובה אחרונה
                  0
                  • yossizY מנותק
                    yossizY מנותק
                    yossiz
                    כתב ב נערך לאחרונה על ידי
                    #9

                    @mekev לענ"ד זו שאלה מצויינת לפורום ולא לגוגל, זה מסוג השאלות שבעל נסיון יכול לענות אבל גוגל הוא מנוע חיפוש ולא בעל נסיון

                    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                    תגובה 1 תגובה אחרונה
                    3

                    בא תתחבר לדף היומי!
                    • התחברות

                    • אין לך חשבון עדיין? הרשמה

                    • התחברו או הירשמו כדי לחפש.
                    • פוסט ראשון
                      פוסט אחרון
                    0
                    • דף הבית
                    • קטגוריות
                    • פוסטים אחרונים
                    • משתמשים
                    • חיפוש
                    • חוקי הפורום