如何在查询 UNION ALL 中设置列名?
How to set the column name in the query UNION ALL?
我正在尝试查询数据库以获取三列
(SELECT SUM(result_enum) AS Positive FROM result WHERE result_enum > 0)
UNION ALL
(SELECT SUM(result_enum) AS Negative FROM result WHERE result_enum < 0)
UNION ALL
(SELECT SUM(result_enum) AS Neutral FROM result WHERE result_enum = 0)
但在一列中得到结果:
如何向数据库发出请求。如果不可能,我可以确定查询结果与我在请求中问他的顺序相同吗?
谢谢!
在单列中这是不可能的,每种类型需要三个单独的列
SELECT SUM(CASE WHEN result_enum > 0 THEN result_enum ELSE 0 END) AS Positive,
SUM(CASE WHEN result_enum < 0 THEN result_enum ELSE 0 END) AS Negative,
0 AS Neutral
FROM TableName
您确实希望根据 sign:
result_enum
列的 组 总和
SELECT SIGN(result_enum), SUM(result_enum) FROM result GROUP BY 1
这将产生:
+-------------------+------------------+
| SIGN(result_enum) | SUM(result_enum) |
+-------------------+------------------+
| -1 | -3 | -- sign of -1 => "Negative"
| 0 | 0 | -- sign of 0 => "Neutral"
| 1 | 9 | -- sign of +1 => "Positive"
+-------------------+------------------+
我正在尝试查询数据库以获取三列
(SELECT SUM(result_enum) AS Positive FROM result WHERE result_enum > 0)
UNION ALL
(SELECT SUM(result_enum) AS Negative FROM result WHERE result_enum < 0)
UNION ALL
(SELECT SUM(result_enum) AS Neutral FROM result WHERE result_enum = 0)
但在一列中得到结果:
如何向数据库发出请求。如果不可能,我可以确定查询结果与我在请求中问他的顺序相同吗?
谢谢!
在单列中这是不可能的,每种类型需要三个单独的列
SELECT SUM(CASE WHEN result_enum > 0 THEN result_enum ELSE 0 END) AS Positive,
SUM(CASE WHEN result_enum < 0 THEN result_enum ELSE 0 END) AS Negative,
0 AS Neutral
FROM TableName
您确实希望根据 sign:
result_enum
列的 组 总和
SELECT SIGN(result_enum), SUM(result_enum) FROM result GROUP BY 1
这将产生:
+-------------------+------------------+ | SIGN(result_enum) | SUM(result_enum) | +-------------------+------------------+ | -1 | -3 | -- sign of -1 => "Negative" | 0 | 0 | -- sign of 0 => "Neutral" | 1 | 9 | -- sign of +1 => "Positive" +-------------------+------------------+