mysql行轉列

在固定列的情況下,可以group by後把每個列要顯示的數據通過if指定寫到sql裏:

...
SUM(IF(條件,輸出的列,默認值)),
SUM(IF(條件,輸出的列,默認值))
...
group by xxx
...

在動態列的情況,可以使用預編譯:

1,先用group_concat將動態行轉出一行賦值給變量

2,然後用多個變量組裝成最後要執行的sql,再執行

SET @SQL_1 =
(
	SELECT GROUP_CONCAT(',',subject_name) 
	FROM subject
    GROUP BY ...
);

SET @SQL_ALL = CONCAT(' select ... ',@SQL_1,'...');
--SET @SQL_2 =...
--SET @SQL_ALL = CONCAT_WS(' UNION ALL ',@SQL_1,@SQL_2);
PREPARE stmt FROM @SQL_ALL;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章