如何在查询 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"
+-------------------+------------------+