转置查询mysql的结果

转置查询mysql的结果,mysql,Mysql,我认为这是一个愚蠢的问题。不可能在mysql上转置查询结果吗 我有这样的疑问: 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) =

我认为这是一个愚蠢的问题。不可能在mysql上转置查询结果吗

我有这样的疑问:

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
+-------------+---------+
| DESCRIPTION |  VALUE  |
+-------------+---------+
| STORAGE     | 2210.40 |
| REPO        | 108.00  |
| CLEANING    | 9490.00 |
| ONE_BAR     | 1512.00 |
| YEARS2      | 250.00  |
| YEARS5      | 540.00  |
| REPAIR      | 7651.95 |
+-------------+---------+
结果是:

+---------+--------+----------+---------+--------+--------+---------+
| 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)
我需要这样:

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
+-------------+---------+
| DESCRIPTION |  VALUE  |
+-------------+---------+
| STORAGE     | 2210.40 |
| REPO        | 108.00  |
| CLEANING    | 9490.00 |
| ONE_BAR     | 1512.00 |
| YEARS2      | 250.00  |
| YEARS5      | 540.00  |
| REPAIR      | 7651.95 |
+-------------+---------+

有没有可能,非常感谢您的帮助

您应该使用
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)

这不是我见过的最好的查询,只是想让你知道你想要什么

您可以使用
联合

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)

您是否忘记了
=05
tb\u fin\u修理处的

请参见:
UNION ALL
faster@sagi因为每个子查询只返回一行,所以我认为不会有任何明显的差异。但是从技术上讲你是对的,联合所有人都可以更快。你知道吗?我收回这句话,甚至没有看一眼问题。你是对的,区别是看不出来的:)我通常在PHP中使用,但是,可以直接从mysql中获取值的总和吗?我通常在PHP中使用,但是,可以直接从mysql中获取值的总和吗?你只想要总值,还是这个查询+总值@法德利兹尔