以下是我寫的一個根據SQL查詢結果動態行轉列的SQL陳述句,現在我遇到一個問題,如何動態的從結果里將指定的列的資料轉換成行資料。“CallType”現在是一個靜態欄位,可以運行成功,但是我需要將CallType轉換為columnname

BEGIN
drop table if exists temptable1;
Set @sq1=CONCAT('Create table temptable1(',sqlstr,')');
PREPARE stmt1 FROM @sq1;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
SET @EE='';
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'SUM(IF(b.', columnname ,' = ''',CallType,''', b.',rowname,', 0)) AS ''', CallType, '''')
) into @EE
FROM temptable1 c;
select @EE;
-- SELECT
-- GROUP_CONCAT(DISTINCT
-- CONCAT(
-- 'SUM(IF(b.''',columnname,''' = ''',
-- c.CallType,
-- ''', b.cc, 0)) AS ''',
-- c.CallType, ''''
-- )
-- ) into @EE
-- FROM reportcall c;
SET @QQ = CONCAT('select ',@EE,' from temptable1 b ',sort );
SELECT @QQ;
PREPARE stmt FROM @QQ;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/192958.html
標籤:MySQL
上一篇:《SQL 必知必會》讀書筆記
