在MySQL中傳回透視表輸出
假設您有一個MySQL表,其組織方式如下:
公司名称 | 操作 | 页数 |
---|---|---|
公司A | 打印 | 3 |
公司A | 打印 | 2 |
公司A | 打印 | 3 |
公司B | 邮件 | NULL |
公司B | 打印 | 2 |
公司B | 打印 | 2 |
公司B | 打印 | 1 |
公司A | 打印 | 3 |
現在,目標是執行一個MySQL查詢以產生類似此的輸出:
公司名称 | 邮件 | 打印1页 | 打印2页 | 打印3页 |
---|---|---|---|---|
公司A | 0 | 0 | 1 | 3 |
公司B | 1 | 1 | 2 | 0 |
從本質上講,此輸出表示一個透視表,它根據每個公司名稱的操作和頁數組合對資料進行分類。
解
要在MySQL中傳回透視表輸出,您可以使用CASE語句定義每個儲存格的條件,並使用GROUP BY依公司名稱分類資料。
以下是提供的範例的SQL語句:
<code class="language-sql">SELECT P.`company_name`, COUNT( CASE WHEN P.`action`='EMAIL' THEN 1 ELSE NULL END ) AS 'EMAIL', COUNT( CASE WHEN P.`action`='PRINT' AND P.`pagecount` = '1' THEN P.`pagecount` ELSE NULL END ) AS 'PRINT 1 pages', COUNT( CASE WHEN P.`action`='PRINT' AND P.`pagecount` = '2' THEN P.`pagecount` ELSE NULL END ) AS 'PRINT 2 pages', COUNT( CASE WHEN P.`action`='PRINT' AND P.`pagecount` = '3' THEN P.`pagecount` ELSE NULL END ) AS 'PRINT 3 pages' FROM test_pivot P GROUP BY P.`company_name`;</code>
此查詢將輸出所需的透視表格式。
重要說明
以上是如何使用 MySQL 查詢產生資料透視表輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!