mysql多表統計數查詢行轉列
阿新 • • 發佈:2018-12-22
今天在統計查詢時遇到以下問題,自己做個記錄:
部門A在A地區釋出一條資料庫型別資源,在B地區釋出一條檔案型別資源。存在db表:
部門 | 地區 | 名稱 | 。。。 |
部門A | 湖南 | 資料庫資源1 | 。。。 |
部門A | 河北 | 資料庫資源2 | 。。。 |
部門 | 地區 | 名稱 | 。。。 |
部門B | 河北 | 檔案資源1 | 。。。 |
部門 | 地區 | 資料庫 | 檔案 |
部門A | 湖南 | 1 | 0 |
部門A | 河北 | 1 | 0 |
部門B | 河北 | 0 | 1 |
先分別查出對應表中的釋出資源條數。根據返回的結構設定對應的列名,匹配的型別設定為1,沒有的設定為0。再通過union all 連線兩個表的結果。最後設定分組條件進行分組。分別對統計的型別資料進行求和得到最終結果SELECT T.部門, T.地區, SUM(T.fileCount) AS fileCount, SUM(T.dbCount) AS dbCount FROM (SELECT d.部門, d.地區, 0 AS fileCount, 1 AS dbCount FROM db d UNION ALL SELECT f.部門, f.地區, 1 AS fileCount, 0 AS dbCount FROM file f ) T GROUP BY T.部門, T.地區