[英]Pivot table with dynamic column names MySQL
大家好,閱讀本文
經過一段時間的搜索,我意識到我需要的是數據透視表。 但是,它必須是動態的。 在where子句中,我將配置stitution_id,每個機構都是托兒所/小學/中學,因此這意味着列名稱將隨着年齡的變化而變化。 (我必須將年齡和性別合並在一起)
這是我使用的SQL查詢。
SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF("2018-08-31", date_of_birth)), "%Y")+0 AS `Age`, class.name AS `Name`,
CASE
WHEN gender_id = '1'
THEN 'M'
ELSE 'F'
END as Gender
from security_users AS `su`
INNER JOIN institution_class_students AS `cs`
ON su.id = cs.student_id
INNER JOIN institution_classes AS `class`
ON cs.institution_class_id = class.id
WHERE cs.institution_id = 538
ORDER BY Name
下面是運行上述查詢后一個類的一些示例輸出。
Age Name Gender
3 Form 1-1 M
4 Form 1-1 F
4 Form 1-1 F
3 Form 1-1 F
3 Form 1-1 F
4 Form 1-1 M
4 Form 1-1 M
4 Form 1-1 F
5 Form 1-1 F
4 Form 1-1 F
3 Form 1-1 F
3 Form 1-1 F
3 Form 1-1 M
3 Form 1-1 M
4 Form 1-1 F
4 Form 1-1 F
5 Form 1-1 F
5 Form 1-1 F
4 Form 1-1 M
4 Form 1-1 M
根據上面的輸出,結果就是我的樣子。 如果我要為一個有年長學生的學校而奔波,那將是11-M,11-F,12-M,12-F。
Class 3-M 3-F 4-M 4-F 5-M 5-F
Form 1-1 3 4 4 6 0 3
以下是我要去某機構工作時的樣子
Class 3-M 3-F 4-M 4-F 5-M 5-F
Form 1-2 5 6 3 2 0 1
Form 1-3 4 2 7 5 0 0
Form 2 0 0 4 1 7 1
Form 3 0 0 0 0 8 9
這可能嗎? 我已經閱讀了許多數據透視表教程,但是很難理解如何做。 任何人都可以對此有所了解。 感謝每一個幫助! 希望以上細節易於理解。
參見http://mysql.rjweb.org/doc.php/pivot -它包含(並說明)一個存儲過程,該存儲過程查看表以構建必要的數據透視查詢。 然后執行它。 存儲過程的CALL
提供6個參數,這比大多數人需要的靈活性更大。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.