一个语句中同一字段上的多个SELECT

时间:2012-11-07 11:58:08

标签: sql sqlite

我得到了下表:

**stats**

id INT FK
day INT    
value INT

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

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

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)可以正常工作。

查询有什么问题?谢谢!

1 个答案:

答案 0 :(得分: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还是{{ 1}}