2016-02-01 2 views
0

У меня есть запрос, который я хотел бы сделать динамично, как и TH2014 TH2015, ....Динамически поле (сумма случай)

Ниже мой запрос

SELECT tgr.no_rptka 
    , tgr.get_name_jabatan 
    , SUM(CASE WHEN tgr.get_year_rptka = YEAR(tmr.date_rptka) THEN tgr.jumlah END) TH2014 
    , SUM(CASE WHEN tgr.get_year_rptka = YEAR(tmr.date_rptka)+1 THEN tgr.jumlah END) TH2015 
    FROM tbl_master_rptka tmr 
    , tbl_get_rptka tgr 
WHERE tmr.no_rptka = tgr.no_rptka 
GROUP 
    BY tgr.get_name_jabatan 
    , tgr.no_rptka 
ORDER 
    BY tgr.no_rptka,id_get ASC 

Как я могу это сделать?

+1

В общем, вопросы представления данных лучше всего оставить на уровне презентации. – Strawberry

+0

Возможный дубликат [MySQL pivot row в динамическое число столбцов] (http://stackoverflow.com/questions/12004603/mysql-pivot-row-into-dynamic-number-of-columns) – Shadow

+0

для информации, – user3409576

ответ

0
SET @SQL = NULL; 
SELECT 
    GROUP_CONCAT(DISTINCT 
    CONCAT(
     'sum(case when (tgr.get_year_rptka) = ''', 
     dt, 
     ''' then tgr.jumlah else 0 end) AS `', 
     dt, '`' 
    ) 
) INTO @SQL 
FROM 
(
    SELECT get_year_rptka AS dt 
    FROM tbl_get_rptka tgr 
    ORDER BY tgr.get_year_rptka 
) d; 

SET @SQL = CONCAT('SELECT tgr.no_rptka,tgr.get_name_jabatan, ', @SQL, ' 
      from tbl_master_rptka tmr 
      inner join tbl_get_rptka tgr 
       on tmr.no_rptka=tgr.no_rptka 

      GROUP BY tgr.get_name_jabatan, tgr.no_rptka 
      ORDER by tgr.no_rptka,tgr.get_name_jabatan, id_get ASC;'); 

PREPARE stmt FROM @SQL; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 
+0

Но , у меня есть проблемы с объединением в компоненте Zeos в delphi, так что бы вы хотели помочь мне? – user3409576

Смежные вопросы