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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
25 פוסטים 3 כותבים 449 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • I מנותק
    I מנותק
    ivrtikshoret
    השיב לmekev ב נערך לאחרונה על ידי
    #2

    @mekev
    באיזה שפה?

    M תגובה 1 תגובה אחרונה
    0
    • M מחובר
      M מחובר
      mekev
      השיב לivrtikshoret ב נערך לאחרונה על ידי
      #3

      @ivrtikshoret
      1.אקסל
      2.SQL SERVER (SSMS)
      3. C#

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

        @mekev כתב במיון תאריכים המוצגים כחודש ושנה בסדר כרונולוגי:

        @ivrtikshoret
        1.אקסל
        2.SQL SERVER (SSMS)
        3. C#

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

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

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

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

          @dovid כתב במיון תאריכים המוצגים כחודש ושנה בסדר כרונולוגי:

          אפשר להציג ישירות רק חודש ושנה

          איך ניתן להציג ישירות רק חודש ושנה?


          ספציפית אני מושך את הנתון מSQL גרסת 2008
          שלא ניתן לשלוף מראש את התוצאה בפורמט 'פיבוט' (זמין כמדומני מ2012)

          מקור הנתונים זה תוצאת שאילתת Group By
          שמסכמת את סך המכירות לפי חודש

          ובתוכנה (C#) אני מבצע פיבוט לפי המופיע כאן

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

            @mekev כתב במיון תאריכים המוצגים כחודש ושנה בסדר כרונולוגי:

            ובתוכנה (C#) אני מבצע פיבוט לפי המופיע כאן

            תביא את דוגמת הקוד שלך.
            אתה ממלא במיוחד DataTable בשביל הPivot?

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

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

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

              @mekev כתב במיון תאריכים המוצגים כחודש ושנה בסדר כרונולוגי:

              ובתוכנה (C#) אני מבצע פיבוט לפי המופיע כאן

              בדוגמה הזו אין כ"כ תצוגה, כי מדובר בDataTable שזה מבנה נתונים.
              שמה בשביל לקבץ לפי חודש ושנה צריך לעשות פשוט ככה:

              var groups = dt.AsEnumerable()
                  .GroupBy(x =>
                  {
                      var dateGroup = x.Field<DateTime>("OPR_DT");
                      return new
                      {
                          opr_dt = new DateTime(dateGroup.Year, dateGroup.Month, 1),
                          opr_hr = x.Field<int>("OPR_HR"),
                          anc_region = x.Field<string>("ANC_REGION"),
                          run_id = x.Field<string>("MARKET_RUN_ID")
                      };
                  }).ToList();
              

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

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

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

                @dovid כתב במיון תאריכים המוצגים כחודש ושנה בסדר כרונולוגי:

                תביא את דוגמת הקוד שלך.

                string[] uniqueAncType = dt.AsEnumerable().Select(x => x.Field<string>("חודשושנה")).Distinct().ToArray();
                
                                    DataTable pivot = new DataTable();
                                  
                                    pivot.Columns.Add("שם מוצר", typeof(string));
                                    pivot.Columns.Add("ברקוד", typeof(string));
                                    pivot.Columns.Add("קבוצה", typeof(string));
                                    pivot.Columns.Add("מלאי נוכחי", typeof(double));
                
                
                                    foreach (string col in uniqueAncType)
                                    {
                                        pivot.Columns.Add(col, typeof(string));
                                    }
                
                
                                    var groups = dt.AsEnumerable()
                                        .GroupBy(x => new {
                                      anc_region = x.Field<string>("שם מוצר"),                           
                                            opr_hr = x.Field<string>("ברקוד"),
                                            anc_grop = x.Field<string>("קבוצה"),
                                            opr_hr1 = x.Field<double>("מלאי נוכחי"),
                
                                     }).ToList();
                
                                    foreach (var group in groups)
                                    {
                                        DataRow newRow = pivot.Rows.Add();
                                        newRow["שם מוצר"] = group.Key.anc_region;
                                        newRow["ברקוד"] = group.Key.opr_hr;
                                        newRow["מלאי נוכחי"] = group.Key.opr_hr1;                      
                                        newRow["קבוצה"] = group.Key.anc_grop;
                
                                        foreach (DataRow ancType in group)
                                        {
                                            newRow[ancType.Field<string>("חודשושנה")] = ancType.Field<double>("כמות מכירות");
                                        }
                
                
                                    }
                
                
                                    dataGridView1.DataSource = pivot;
                
                dovidD תגובה 1 תגובה אחרונה
                0
                • dovidD מנותק
                  dovidD מנותק
                  dovid ניהול
                  השיב לmekev ב נערך לאחרונה על ידי
                  #9

                  @mekev הדוגמה שלך חסרה כי אין לי מושג איך נוצרת העמודה "חודשושנה" שנראה שהיא כבר איננה תאריך אלא טקסט.

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

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

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

                    @mekev הכי טוב שתביא לי את הSQL (אני מניח שאתה לא משתמש בEF, נכון?)
                    ותגדיר לי לפי מה הPivot הרצוי ואתן לך את הקוד המתאים לענ"ד.

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

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

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

                      @dovid

                      CREATE TABLE Sales
                          ([date] datetime, [Barcode] int, [product_name] varchar(50),[GGroup] varchar(50),[stock] int, [quantity] int)
                      ;
                          
                      INSERT INTO Sales
                          ([date] , [Barcode] , [product_name] ,[GGroup],[stock] , [quantity] )
                      VALUES
                          ('2022-01-01 12:00:00', 2885, 'Cookware','microwave',25,1),
                          ('2022-01-06 13:00:00', 2885, 'Cookware','microwave',25,2),
                          ('2022-02-01 14:00:00', 2885, 'Cookware','microwave',25,3),
                          ('2022-02-05 15:00:00',  2885, 'Cookware','microwave',25,4),
                          ('2022-03-05 16:00:00', 2885, 'Cookware','microwave',25,5),
                          ('2022-03-06 17:00:00', 2885, 'Cookware','microwave',25,6),
                          ('2022-04-07 18:00:00', 2885, 'Cookware','microwave',25,7),
                          ('2022-04-08 19:00:00',  2885, 'Cookware','microwave',25,8),
                          ('2022-05-09 20:00:00',  2885, 'Cookware','microwave',25,9),
                          ('2022-05-10 21:00:00',  2885, 'Cookware','microwave',25,10),
                          ('2022-06-11 22:00:00',  2885, 'Cookware','microwave',25,11),
                          ('2022-06-12 23:00:00',  2885, 'Cookware','microwave',25,12),
                          ('2022-07-13 11:00:00', 2885, 'Cookware','microwave',25,13),
                          ('2022-07-14 10:00:00',  2885, 'Cookware','microwave',25,14),
                      	('2022-01-01 12:00:00', 3665, 'Appliances','refrigerator',12,15),
                          ('2022-01-06 13:00:00', 3665, 'Appliances','refrigerator',12,16),
                          ('2022-02-01 14:00:00', 3665, 'Appliances','refrigerator',12,17),
                          ('2022-02-05 15:00:00', 3665, 'Appliances','refrigerator',12,18),
                          ('2022-03-05 16:00:00', 3665, 'Appliances','refrigerator',12,19),
                          ('2022-03-06 17:00:00', 3665, 'Appliances','refrigerator',12,20),
                          ('2022-04-07 18:00:00', 3665, 'Appliances','refrigerator',12,21),
                          ('2022-04-08 19:00:00',  3665, 'Appliances','refrigerator',12,22),
                          ('2022-05-09 20:00:00',  3665, 'Appliances','refrigerator',12,23),
                          ('2022-05-10 21:00:00', 3665, 'Appliances','refrigerator',12,24),
                          ('2022-06-11 22:00:00',  3665, 'Appliances','refrigerator',12,25),
                          ('2022-06-12 23:00:00',  3665, 'Appliances','refrigerator',12,26),
                          ('2022-07-13 11:00:00', 3665, 'Appliances','refrigerator',12,27),
                          ('2022-07-14 10:00:00',  3665, 'Appliances','refrigerator',12,28),
                      	('2022-01-01 12:00:00', 2885, 'Cookware','microwave',25,1),
                          ('2022-01-06 13:00:00', 2885, 'Cookware','microwave',25,2),
                          ('2022-02-01 14:00:00', 2885, 'Cookware','microwave',25,3),
                          ('2022-02-05 15:00:00',  2885, 'Cookware','microwave',25,4),
                          ('2022-03-05 16:00:00', 2885, 'Cookware','microwave',25,5),
                          ('2022-03-06 17:00:00', 2885, 'Cookware','microwave',25,6),
                          ('2022-04-07 18:00:00', 2885, 'Cookware','microwave',25,7),
                          ('2022-04-08 19:00:00',  2885, 'Cookware','microwave',25,8),
                          ('2022-05-09 20:00:00',  2885, 'Cookware','microwave',25,9),
                          ('2022-05-10 21:00:00',  2885, 'Cookware','microwave',25,10),
                          ('2022-06-11 22:00:00',  2885, 'Cookware','microwave',25,11),
                          ('2022-06-12 23:00:00',  2885, 'Cookware','microwave',25,12),
                          ('2022-07-13 11:00:00', 2885, 'Cookware','microwave',25,13),
                          ('2022-07-14 10:00:00',  2885, 'Cookware','microwave',25,14),
                      	('2023-01-01 12:00:00', 3665, 'Appliances','refrigerator',12,15),
                          ('2023-01-06 13:00:00', 3665, 'Appliances','refrigerator',12,16),
                          ('2023-02-01 14:00:00', 3665, 'Appliances','refrigerator',12,17),
                          ('2023-02-05 15:00:00', 3665, 'Appliances','refrigerator',12,18),
                          ('2023-03-05 16:00:00', 3665, 'Appliances','refrigerator',12,19),
                          ('2023-03-06 17:00:00', 3665, 'Appliances','refrigerator',12,20),
                          ('2023-04-07 18:00:00', 3665, 'Appliances','refrigerator',12,21),
                          ('2023-04-08 19:00:00',  3665, 'Appliances','refrigerator',12,22),
                          ('2023-05-09 20:00:00',  3665, 'Appliances','refrigerator',12,23),
                          ('2023-05-10 21:00:00', 3665, 'Appliances','refrigerator',12,24),
                          ('2023-06-11 22:00:00',  3665, 'Appliances','refrigerator',12,25),
                          ('2023-06-12 23:00:00',  3665, 'Appliances','refrigerator',12,26),
                          ('2023-07-13 11:00:00', 3665, 'Appliances','refrigerator',12,27),
                          ('2023-07-14 10:00:00',  3665, 'Appliances','refrigerator',12,28)
                      ;
                      

                      אפשרות א:

                      select  year (s.date) as year ,month (s.date) as month ,s.product_name ,s.Barcode ,s.GGroup ,s.stock ,SUM (s.quantity) AS quantity
                      from Sales s
                      group by year(s.date),month(s.date) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock
                      

                      אפשרות ב:

                      select CONVERT( nvarchar,month(date)) + '/' +CONVERT( nvarchar, year(date)) as 'date' ,s.product_name ,s.Barcode ,s.GGroup ,s.stock ,SUM (s.quantity) AS quantity
                      from Sales s
                      group by year(s.date),month(s.date) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock
                      

                      התוצאה הרצויה:

                      a364197e-11cf-48db-b1d9-7a7c7252804b-image.png

                      (נ.ב. לא מצאתי עורך קוד אונליין להעלות דרכו את הדוגמא
                      sqlfiddle לא תומך בחלק מהפונקציות)

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

                        @mekev יאהוו ממש השקעת, כל הכבוד.
                        אני התכוונתי שתביא לי את הSELECT שאיתו אתה שולף מהSQL בC# (אתה עובד עם DataSet.Fill?).
                        בכל אופן בדוגמאות שלך, אתה פשוט מצרף עמודה שמכילה את התאריך כתאריך:
                        אפשרות א'

                        select  MIN(s.date) as FullDate, year (s.date) as year ,month (s.date) as month ,s.product_name ,s.Barcode ,s.GGroup ,s.stock ,SUM (s.quantity) AS quantity
                        from Sales s
                        group by year(s.date),month(s.date) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock
                        

                        אפשרות ב' לא טובה. אם כבר ליצור מזה תאריך חדש של יום האחד בחודש תמיד:

                        select DATEFROMPARTS(year(date), month(date), 1) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock ,SUM (s.quantity) AS quantity
                        from Sales s
                        group by DATEFROMPARTS(year(date), month(date), 1) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock
                        

                        אבל אני לא מבין איך כל זה יעזור לך לC#, ץתביא את הSQL שאיתו אתה שולף לDATATBLE עם החודשושנה.

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

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

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

                          @dovid

                          1. אני שולף עם SqlCommand

                          2. העמודה 'date' זה העמודה 'חודשושנה' בקוד האמיתי שלי
                            אני כיום שולף מה SQL באפשרות ב' שכתבתי (הופך את התאריך לטקסט)
                            ומבצע עליה בC# 'פיבוט' כדלעיל

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

                            @mekev אוקי,
                            אז קח את הקוד הזה

                            select DATEFROMPARTS(year(date), month(date), 1) as 'date' ,s.product_name ,s.Barcode ,s.GGroup ,s.stock ,SUM (s.quantity) AS quantity
                            from Sales s
                            group by year(s.date),month(s.date) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock
                            

                            בקוד שלך תשנה את זה:

                            var uniqueAncType = dt.AsEnumerable().Select(x => x.Field<DateTime>("date")).Distinct().OrderBy(x => x).Select(x => x.ToString("MM/yyyy"));
                            

                            וגם את זה:

                             newRow[ancType.Field<DateTime>("date").ToString("MM/yyyy")] = ancType.Field<double>("כמות מכירות");
                            

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

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

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

                              @dovid כתב במיון תאריכים המוצגים כחודש ושנה בסדר כרונולוגי:

                              DATEFROMPARTS

                              הפונקציה DATEFROMPARTS זמינה רק מגרסת 2012.....

                              עריכה:

                              החלפתי ב:

                              dateadd(dd, 0, dateadd(mm, datediff(mm,0, date), 0)) as 'חודשושנה'
                              

                              מקור

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

                                @mekev

                                לא עובד...

                                כאשר הוא מקבל את ההמרה ל: ToString("MM/yyyy") הוא ממיין כטקסט

                                e55378da-28c3-4707-a84d-e9908dc94454-image.png

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

                                  @mekev המיון של העמודות נקבע עוד לפני ההמרה לToString, איפה שכתוב המילים OrderBy.
                                  לכן התוצאה שאתה מציג היא בהכרח שלא העתקת את הקוד כפי שהוא (בפרט השורה בה שמתי OrderBy), ואם אתה מכחיש תהיה חייב להציג לי כדי שהאמין לך...

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

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

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

                                    @dovid
                                    6ed72cad-5064-4778-83ce-bf1544f553a5-image.png

                                    עריכה: כאשר אני עושה order by ישירות בSQL זה אכן מביא בצורה מממוינת
                                    במקביל גם כאשר אני משאיר את המיון בביצוע השאילתא דרך הC# זה מביא את התוצאה הנ"ל

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

                                      @mekev בא נשאל ככה, יש קוד נוסף חוץ מזה (כלומר חוץ ממה שמוצג בתמונה) שמנסה לסדר את העמודות?
                                      אגב גם אם הוא היה ממין כטקסט עדיין 01/2022 צריך לקדום ל01/2023. משהו פה משגע אותי.

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

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

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

                                        @dovid

                                        @dovid כתב במיון תאריכים המוצגים כחודש ושנה בסדר כרונולוגי:

                                        יש קוד נוסף חוץ מזה (כלומר חוץ ממה שמוצג בתמונה) שמנסה לסדר את העמודות?

                                        לא.

                                        זה מה שמופיע בdt

                                        4285c3af-8e9c-46de-bc2e-07c13d97d959-image.png

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

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

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

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

                                          M תגובה 1 תגובה אחרונה
                                          2

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

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

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