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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
9 פוסטים 5 כותבים 226 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • 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
        • M mekev

          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 מנותק
          dovidD מנותק
          dovid
          ניהול
          כתב ב נערך לאחרונה על ידי
          #4

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

          • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
          • בכל נושא אפשר ליצור קשר dovid@tchumim.com
          M תגובה 1 תגובה אחרונה
          4
          • M mekev

            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 
            
            
            ל מנותק
            ל מנותק
            לי ראש
            כתב ב נערך לאחרונה על ידי
            #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
            • dovidD dovid

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

              M מנותק
              M מנותק
              mekev
              כתב ב נערך לאחרונה על ידי mekev
              #6

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

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

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

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

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

              dovidD תגובה 1 תגובה אחרונה
              0
              • M mekev

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

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

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

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

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

                dovidD מנותק
                dovidD מנותק
                dovid
                ניהול
                כתב ב נערך לאחרונה על ידי
                #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
                • dovidD dovid

                  @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] 
                  
                  M מנותק
                  M מנותק
                  mekev
                  כתב ב נערך לאחרונה על ידי
                  #8

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

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

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

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

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

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

                    תגובה 1 תגובה אחרונה
                    3
                    תגובה
                    • תגובה כנושא
                    התחברו כדי לפרסם תגובה
                    • מהישן לחדש
                    • מהחדש לישן
                    • הכי הרבה הצבעות


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

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

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