I think this is silly question. Is t possible transpose the result from query on mysql?
I have query like this :
SELECT SUM(a.BALANCE) AS STORAGE,
(SELECT SUM(LIFT_ON) FROM tb_fin_repo b WHERE LPAD(MONTH( b.DATE_OUT), 2, 0) = 05) AS REPO,
(SELECT SUM(CLEANING) FROM tb_fin_cleaning c WHERE LPAD(MONTH(c.OUT_DATE), 2, 0) = 05) AS CLEANING,
(SELECT SUM(ONE_BAR) FROM tb_fin_one_bar d WHERE LPAD(MONTH(d.OUT_DATE), 2, 0) = 05) AS ONE_BAR,
(SELECT SUM(YEARS2) FROM tb_fin_test_periodic e WHERE LPAD(MONTH(e.OUT_DATE), 2, 0) = 05) AS YEARS2,
(SELECT SUM(YEARS5) FROM tb_fin_test_periodic f WHERE LPAD(MONTH(f.OUT_DATE), 2, 0) = 05) AS YEARS5,
(SELECT SUM(REPAIR) FROM tb_fin_repair g WHERE LPAD(MONTH(g.OUT_DATE),2,0)) AS REPAIR
FROM tb_fin_storage a
WHERE LPAD(MONTH( a.OUT_DATE), 2, 0) = 05
The result is :
+---------+--------+----------+---------+--------+--------+---------+
| STORAGE | REPO | CLEANING | ONE_BAR | YEARS2 | YEARS5 | REPAIR |
+---------+--------+----------+---------+--------+--------+---------+
| 2210.40 | 108.00 | 9490.00 | 1512.00 | 250.00 | 540.00 | 7651.95 |
+---------+--------+----------+---------+--------+--------+---------+
1 row in set (0.00 sec)
I need like this :
+-------------+---------+
| DESCRIPTION | VALUE |
+-------------+---------+
| STORAGE | 2210.40 |
| REPO | 108.00 |
| CLEANING | 9490.00 |
| ONE_BAR | 1512.00 |
| YEARS2 | 250.00 |
| YEARS5 | 540.00 |
| REPAIR | 7651.95 |
+-------------+---------+
Is it possible, for the help is so appreciated
You should use UNION ALL
:
SELECT 'STORAGE' as description, SUM(a.BALANCE) AS STORAGE FROM tb_fin_storage a
WHERE LPAD(MONTH( a.OUT_DATE), 2, 0) = 0
UNION ALL
SELECT 'REPO',SUM(LIFT_ON) FROM tb_fin_repo b
WHERE LPAD(MONTH( b.DATE_OUT), 2, 0) = 05
UNION ALL
SELECT 'CLEANING' , SUM(CLEANING) FROM tb_fin_cleaning c
WHERE LPAD(MONTH(c.OUT_DATE), 2, 0) = 05)
UNION ALL
SELECT 'ONE_BAR',SUM(ONE_BAR) FROM tb_fin_one_bar d
WHERE LPAD(MONTH(d.OUT_DATE), 2, 0) = 05)
UNION ALL
SELECT 'YEARS2' , SUM(YEARS2) FROM tb_fin_test_periodic e
WHERE LPAD(MONTH(e.OUT_DATE), 2, 0) = 05
UNION ALL
SELECT 'YEARS5' , SUM(YEARS5) FROM tb_fin_test_periodic f
WHERE LPAD(MONTH(f.OUT_DATE), 2, 0) = 05
UNION ALL
SELECT 'REPAIR' , SUM(REPAIR) FROM tb_fin_repair g
WHERE LPAD(MONTH(g.OUT_DATE),2,0)
This is not very best query I ever seen, but just to give you an idea of what you are asking for.
You can use UNION
:
SELECT 'STORAGE' as DESCRIPTION,SUM(a.BALANCE) as Value
FROM tb_fin_storage a
WHERE LPAD(MONTH( a.OUT_DATE), 2, 0) = 05
UNION
SELECT 'REPO',SUM(LIFT_ON)
FROM tb_fin_repo b
WHERE LPAD(MONTH( b.DATE_OUT), 2, 0) = 05
UNION
SELECT 'CLEANING',SUM(CLEANING)
FROM tb_fin_cleaning c
WHERE LPAD(MONTH(c.OUT_DATE), 2, 0) = 05
UNION
SELECT 'ONE_BAR',SUM(ONE_BAR)
FROM tb_fin_one_bar d
WHERE LPAD(MONTH(d.OUT_DATE), 2, 0) = 05
UNION
SELECT 'YEARS2',SUM(YEARS2)
FROM tb_fin_test_periodic e
WHERE LPAD(MONTH(e.OUT_DATE), 2, 0) = 05
UNION
SELECT 'YEARS5',SUM(YEARS5)
FROM tb_fin_test_periodic f
WHERE LPAD(MONTH(f.OUT_DATE), 2, 0) = 05
UNION
SELECT 'REPAIR', SUM(REPAIR)
FROM tb_fin_repair g
WHERE LPAD(MONTH(g.OUT_DATE),2,0)
Didn't you forget = 05
at the tb_fin_repair WHERE
?
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.