2012-11-07 44 views
3

我下表了:多在同一個字段中,選擇一個語句

**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)在不同的查詢中工作正常。

查詢有什麼問題?謝謝!

回答

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 weeklast month

+0

您岩石的類型。感謝您的快速答案! – user1782427

+0

@ user1782427 - 不,已經太晚了。 –

+0

'+ 1'謙虛:D –

相關問題