3

我得到了下表:

**stats**

id INT FK
day INT    
value INT

我想创建一个 SQL 查询,它将在一个语句中对最后一天、上周和上个月的 value 列中的值求和。

到目前为止,我得到了这个:

select sum(value) from stats as A where A.day > now() - 1
union
select sum(value) from stats as B where B.day > now() - 7
union
select sum(value) from stats as C where C.day > now() - 30

这仅返回第一个总和(值),我期望返回 3 个值。

运行:select sum(value) from stats as A where A.day > now() - X ( Where x = 1/7/30)在不同的查询中正常工作。

查询有什么问题?谢谢!

4

1 回答 1

4

UNION是隐式不同的。UNION ALL像这样使用:

SELECT 'last day' ItemType, sum(value) FROM stats as A WHERE A.day > now() - 1
UNION ALL
SELECT 'last week', SUM(value) FROM stats as B WHERE B.day > now() - 7
UNION ALL
SELECT 'last month', SUM(value) FROM stats as C WHERE C.day > now() - 30

请注意:我添加了一个新列ItemType来指示总和值的类型是last daylast week还是last month

于 2012-11-07T12:07:08.673 回答