建立透視查詢

MySQL 沒有提供建立資料透視查詢的內建方法。但是,可以使用預準備語句建立這些。

假設表 tbl_values

ID 名稱
1 皮特 一個 10
2 皮特 B 20
3 約翰 一個 10

請求:建立一個查詢,顯示每個 NameValue 總和; 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;

關於 SQL 小提琴的例子