MySQL Pivot Table

ArunaTelshan

Well-known member
  • Nov 29, 2013
    3,255
    1,216
    113
    Biyagama
    man gawa table dekak thiyenawa mata meken report ekak desigh karaganna one. katahari puluwanda meka hadaganna widiyak kiyanna. man haduwa widiyata empty columns godak enawa. aurudu deka thunaka report ekak gannath ba monthly group kaloth :(:(:(



    TT1cC4K.jpg



    an6i2ai.jpg


    me wage ekak hadagannai one.

    iM6k95a.jpg


    me mage query eka
    PHP:
    SELECT
        student.stu_name,
        SUM(IF(MONTH(fees.date) = 1, fees.amt, 0)) AS Jan,
        SUM(IF(MONTH(fees.date) = 2, fees.amt, 0)) AS Feb,
        SUM(IF(MONTH(fees.date) = 3, fees.amt, 0)) AS Mar,
        SUM(IF(MONTH(fees.date) = 4, fees.amt, 0)) AS Apr,
        SUM(IF(MONTH(fees.date) = 5, fees.amt, 0)) AS May,
        SUM(IF(MONTH(fees.date) = 6, fees.amt, 0)) AS Jun,
        SUM(IF(MONTH(fees.date) = 7, fees.amt, 0)) AS Jul,
        SUM(IF(MONTH(fees.date) = 8, fees.amt, 0)) AS Aug,
        SUM(IF(MONTH(fees.date) = 9, fees.amt, 0)) AS Sep,
        SUM(IF(MONTH(fees.date) = 10, fees.amt, 0)) AS Oct,
        SUM(IF(MONTH(fees.date) = 11, fees.amt, 0)) AS Nov,
        SUM(IF(MONTH(fees.date) = 12, fees.amt, 0)) AS Dece,
        SUM(fees.amt) AS Total,
        (28000-(SUM(fees.amt))) AS Balance
    FROM
        fees
    INNER JOIN student ON fees.stu_id = student.id
    GROUP BY student.stu_id
    WITH ROLLUP
     
    • Like
    Reactions: LazyLizard

    LazyLizard

    Well-known member
  • Aug 27, 2015
    59,445
    14,447
    113
    10
    කටුකරෝලගම
    ඕක HTML වලින් පෙන්නනකොට ඔහොම බින්දු තියෙන ටේබල් එකක් වගේ පෙන්නන්න ඕනේ නෑ නේද. ඕනේ ඒවා විතරක් පෙන්නන්න පුළුවන් නෙ පල්ලෙහට ලිස්ට් එක වගේ
     
    • Like
    Reactions: ArunaTelshan

    ArunaTelshan

    Well-known member
  • Nov 29, 2013
    3,255
    1,216
    113
    Biyagama
    ඕක HTML වලින් පෙන්නනකොට ඔහොම බින්දු තියෙන ටේබල් එකක් වගේ පෙන්නන්න ඕනේ නෑ නේද. ඕනේ ඒවා විතරක් පෙන්නන්න පුළුවන් නෙ පල්ලෙහට ලිස්ට් එක වගේ


    eka thamai.. mata one data ekakhari thiyena column witharak pennanna. :baffled: sql walin e widiyata ganna widiya gana idea ekak nadda?
     

    chaturanga836

    Well-known member
  • Aug 12, 2015
    3,354
    1,307
    113
    Malabe
    Try this mchn

    SELECT
    student.stu_name,
    SUM(IF(MONTH(fees.date) = 1, fees.amt, 0)) AS Jan,
    SUM(IF(MONTH(fees.date) = 2, fees.amt, 0)) AS Feb,
    SUM(IF(MONTH(fees.date) = 3, fees.amt, 0)) AS Mar,
    SUM(IF(MONTH(fees.date) = 4, fees.amt, 0)) AS Apr,
    SUM(IF(MONTH(fees.date) = 5, fees.amt, 0)) AS May,
    SUM(IF(MONTH(fees.date) = 6, fees.amt, 0)) AS Jun,
    SUM(IF(MONTH(fees.date) = 7, fees.amt, 0)) AS Jul,
    SUM(IF(MONTH(fees.date) = 8, fees.amt, 0)) AS Aug,
    SUM(IF(MONTH(fees.date) = 9, fees.amt, 0)) AS Sep,
    SUM(IF(MONTH(fees.date) = 10, fees.amt, 0)) AS Oct,
    SUM(IF(MONTH(fees.date) = 11, fees.amt, 0)) AS Nov,
    SUM(IF(MONTH(fees.date) = 12, fees.amt, 0)) AS Dece,
    SUM(fees.amt) AS Total,
    (28000-(SUM(fees.amt))) AS Balance
    FROM
    fees
    INNER JOIN student ON fees.stu_id = student.id
    GROUP BY student.stu_id ,YEAR(fees.date),MONTH(fees.date)
     

    PMMM

    Member
    Jul 5, 2018
    313
    41
    0
    මයිසීක්වෙල් කියල එදවස්වල අපිට උගන්වපු කෙනා කියුවෙ. මට තාම මතකයි, ඒත් බ්‍රිටිෂ් උන් විතරයි එහෙම කියන්නෙ, අපි ඕක කියන්ඩ ගියාම අමුතු විදහට බලනව. මයිඇස්කියුඇල් කියනව ඊට හොඳයි.
     

    ArunaTelshan

    Well-known member
  • Nov 29, 2013
    3,255
    1,216
    113
    Biyagama
    Try this mchn

    SELECT
    student.stu_name,
    SUM(IF(MONTH(fees.date) = 1, fees.amt, 0)) AS Jan,
    SUM(IF(MONTH(fees.date) = 2, fees.amt, 0)) AS Feb,
    SUM(IF(MONTH(fees.date) = 3, fees.amt, 0)) AS Mar,
    SUM(IF(MONTH(fees.date) = 4, fees.amt, 0)) AS Apr,
    SUM(IF(MONTH(fees.date) = 5, fees.amt, 0)) AS May,
    SUM(IF(MONTH(fees.date) = 6, fees.amt, 0)) AS Jun,
    SUM(IF(MONTH(fees.date) = 7, fees.amt, 0)) AS Jul,
    SUM(IF(MONTH(fees.date) = 8, fees.amt, 0)) AS Aug,
    SUM(IF(MONTH(fees.date) = 9, fees.amt, 0)) AS Sep,
    SUM(IF(MONTH(fees.date) = 10, fees.amt, 0)) AS Oct,
    SUM(IF(MONTH(fees.date) = 11, fees.amt, 0)) AS Nov,
    SUM(IF(MONTH(fees.date) = 12, fees.amt, 0)) AS Dece,
    SUM(fees.amt) AS Total,
    (28000-(SUM(fees.amt))) AS Balance
    FROM
    fees
    INNER JOIN student ON fees.stu_id = student.id
    GROUP BY student.stu_id ,YEAR(fees.date),MONTH(fees.date)

    thanku mcn eth mehema kalama student.stu_id eken group wennathuwa yanawa :dull: mata ara 0 value thiyena column tika dynamic generate karaganna thibbanam athi..



    මයිසීක්වෙල් කියල එදවස්වල අපිට උගන්වපු කෙනා කියුවෙ. මට තාම මතකයි, ඒත් බ්‍රිටිෂ් උන් විතරයි එහෙම කියන්නෙ, අපි ඕක කියන්ඩ ගියාම අමුතු විදහට බලනව. මයිඇස්කියුඇල් කියනව ඊට හොඳයි.

    :shocked::shocked::shocked:

    යූ කැන් ටේක් ස්ක්‍රීන්ෂොට්ස් සිම්ප්ලි බයි ප්‍රෙසින් ද Print Screen බොත්තම.


    hari hari ithin ewele pc eke internet thibune na.
     

    ArunaTelshan

    Well-known member
  • Nov 29, 2013
    3,255
    1,216
    113
    Biyagama

    katahari puluwanda mata meka php walata harawala denna..


    Code:
    SET @sql = NULL;
    SELECT
      GROUP_CONCAT(DISTINCT
        CONCAT(
          'SUM(CASE WHEN MonthYear = ''',
          MonthYear,
          ''' THEN total ELSE 0 END) AS ',
          MonthYear
        )
      ) INTO @sql
    FROM (
      SELECT
        cid,
        DATE_FORMAT(duedate, '%b_%y') MonthYear,
        total
      FROM invoices
      WHERE duedate BETWEEN CAST('2013-01-01' AS DATE) AND CAST('2013-07-31' AS DATE)
      ORDER BY duedate
    ) src;
    
    SET @sql = CONCAT("SELECT cid, ", @sql, "
                       FROM (
                         SELECT
                           cid,
                           DATE_FORMAT(duedate, '%b_%y') MonthYear,
                           total
                         FROM invoices
                         WHERE duedate BETWEEN CAST('2013-01-01' AS DATE) AND CAST('2013-07-31' AS DATE)
                         ORDER BY duedate
                       ) src
                       GROUP BY cid");
    
    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;



    $query = "SQL QUERY";
    $result = mysqli_query($connection,$query);

    me widiyata run karanna puluwan wena widiyata