วันจันทร์ที่ 21 เมษายน พ.ศ. 2557

Mysql เพิ่ม Field การนับจำนวนแถว ขึ้นมาในการแสดงผล





MYSQL ==>

SELECT @i:=@i+1 as idx , `sk_water`.`dates` as dates,
              `sk_water`.`forebay` as forebay,
              sum(`sk_water`.`releases`) as sumrel,
              `sk_water`.`nextday_rel_plan` as nowplan,
              (sum(`sk_water`.`u1_energy`)+
              sum(`sk_water`.`u2_energy`)+
              sum(`sk_water`.`u3_energy`)+
              sum(`sk_water`.`u4_energy`)) as engr
       FROM (SELECT @i:=0) AS _init
       join`sk_water`
       WHERE (year(`sk_water`.`dates`) BETWEEN
     
             (
               SELECT max(year(`sk_water`.`dates`)-1)
               FROM `sk_water`
             ) AND (
               SELECT max(year(`sk_water`.`dates`))
               FROM `sk_water`)
             )
group by dates



วันอาทิตย์ที่ 20 เมษายน พ.ศ. 2557

ทำข้อมูลรายชั่วโมงให้แสดงผลเป็นรายเดือน และแปลงตารางจาก Row to Column (Transpose Table)

ทำข้อมูลรายชั่วโมงให้แสดงผลเป็นรายเดือน

Mysql Code => 

SELECT
 year(`sk_water`.`dates`) as years,
  MONTH(`sk_water`.`dates`) as months,
  sum(`sk_water`.`u1_energy` + `sk_water`.`u2_energy`+`sk_water`.`u3_energy`+
  `sk_water`.`u4_energy`) as sumengr
FROM
  `sk_water`
GROUP BY EXTRACT(YEAR_MONTH FROM `sk_water`.`dates`)
order by
year(`sk_water`.`dates`),  MONTH(`sk_water`.`dates`)

Result =>


 ปรับตารางการแสดงผลให้เป็นแบบ Transpose (ปรับจาก Row to Column)

** ก่อนจะทำการปรับตารางได้จะต้องนำ SQL ข้างบนไปทำเป็น รูปแบบ View Table ก่อน
    ตั้งชื่อว่า show_month_year

  จากนั้นใช้คำสั่ง SQL ทำการปรับตาราง
Mysql Code => 
   SELECT show_month_year.years,
          MAX(CASE WHEN show_month_year.`months` = '1' THEN show_month_year.`sumengr` ELSE NULL END) AS Jan,
          MAX(CASE WHEN show_month_year.`months` = '2' THEN show_month_year.`sumengr` ELSE NULL END) AS Feb,
          MAX(CASE WHEN show_month_year.`months` = '3' THEN show_month_year.`sumengr` ELSE NULL END) AS Mar,
          MAX(CASE WHEN show_month_year.`months` = '4' THEN show_month_year.`sumengr` ELSE NULL END) AS Apr,
          MAX(CASE WHEN show_month_year.`months` = '5' THEN show_month_year.`sumengr` ELSE NULL END) AS May,
          MAX(CASE WHEN show_month_year.`months` = '6' THEN show_month_year.`sumengr` ELSE NULL END) AS Jun,          
          MAX(CASE WHEN show_month_year.`months` = '7' THEN show_month_year.`sumengr` ELSE NULL END) AS July,
          MAX(CASE WHEN show_month_year.`months` = '8' THEN show_month_year.`sumengr` ELSE NULL END) AS Aug,
          MAX(CASE WHEN show_month_year.`months` = '9' THEN show_month_year.`sumengr` ELSE NULL END) AS Sep,
          MAX(CASE WHEN show_month_year.`months` = '10' THEN show_month_year.`sumengr` ELSE NULL END) AS Oct,
          MAX(CASE WHEN show_month_year.`months` = '11' THEN show_month_year.`sumengr` ELSE NULL END) AS Nov,
          MAX(CASE WHEN show_month_year.`months` = '12' THEN show_month_year.`sumengr` ELSE NULL END) AS Decs 
    FROM `show_month_year`
    WHERE show_month_year.years BETWEEN '2008' and '2010'
GROUP BY `show_month_year`.`years`

Result =>