假设我有这样的东西:
MySQL 表
Date | Name | Val
22/11 | a | 1
22/11 | b | 2
22/11 | a | 3
22/11 | a | 4
23/11 | b | 1
23/11 | a | 2
23/11 | a | 3
23/11 | a | 5
我需要一个查询,在一列上显示 Name = 'a' 时每一天的值总和,在另一列上显示所有值的总和(也是每一天)。
在我的示例中,结果将是这样的:
Date | a.Total | Total
22/11 | 8 | 10
23/11 | 10 | 11
我试过这样的:
SELECT date, SUM(Val) AS a.Total, SUM(Val) AS Total FROM tbl1 Where Name = 'a'
关键是我需要指定一个 WHERE 子句来获取“a.total”值 (WHERE Name = 'a'),但我不希望它应用于获取总数。
我也尝试过使用 Left Join 进行查询,但没有成功。
非常感谢任何帮助。
最佳答案
您应该在第一个 SUM()
中使用 GROUP BY
和 CASE
SELECT date,
SUM( CASE WHEN Name='a'
THEN Val
ELSE 0
END) AS a_Total,
SUM(Val) AS Total
FROM tbl1
GROUP BY `Date`
关于mysql - 使用 MySQL 多次选择同一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20288015/