建立透視查詢
MySQL 沒有提供建立資料透視查詢的內建方法。但是,可以使用預準備語句建立這些。
假設表 tbl_values
:
ID |
名稱 | 組 | 值 |
---|---|---|---|
1 |
皮特 | 一個 | 10 |
2 |
皮特 | B | 20 |
3 |
約翰 | 一個 | 10 |
請求:建立一個查詢,顯示每個 Name
的 Value
總和; Group
必須是列標題,Name
必須是行標題。
-- 1. Create an expression that builds the columns
set @sql = (
select group_concat(distinct
concat(
"sum(case when `Group`='", Group, "' then `Value` end) as `", `Group`, "`"
)
)
from tbl_values
);
-- 2. Complete the SQL instruction
set @sql = concat("select Name, ", @sql, " from tbl_values group by `Name`");
-- 3. Create a prepared statement
prepare stmt from @sql;
-- 4. Execute the prepared statement
execute stmt;
結果:
名稱 | 一個 | B |
---|---|---|
約翰 | 10 | 空值 |
皮特 | 10 | 20 |
重要說明: 一旦不再需要準備好的宣告,請取消分配:
deallocate prepare stmt;