2014-01-09 244 views
0

我想了解如何編寫可以從同一個表返回相關數據行的SQL語句。來自同一個表的相關數據行的SQL查詢

舉例來說,我有以下的表稱爲採購:

------------------------------ 
|ID | Customer | Date | Cost | 
------------------------------ 
1 | 1  | Mon | 20.0 
2 | 1  | Tue | 10.0 
3 | 1  | Sat | 23.0 
4 | 2  | Thu | 211.0 
5 | 2  | Mon | 24.0 
6 | 2  | Sat | 50.0 
7 | 3  | Mon | 34.0 
8 | 3  | Sat | 200.0 
9 | 3  | Fri | 90.0 

我要爲每一個客戶在週六和相應的數據花了多少錢,因爲他們花了多少錢在週一的數據,從而使我會得到以下數據:

Saturday: [23.0,50.0,200.0] 
Monday: [20.0,24,0,34.0] 

我該怎麼做?我可以這樣做:

SELECT cost FROM purchases WHERE Date=='Sat'SELECT cost FROM purchases WHERE Date=='Mon'但這看起來並不令人滿意,因爲它取決於數據庫給出結果的順序,並且購買可能在週六和週一都沒有發生。

我調查了聯合和聯盟爲此目的,但他們似乎關注來自多個表的數據。

我確定有一個標準的方法來解決這個問題。

+0

你是什麼意思「關聯多少」 –

+0

感謝您的評論,我試圖澄清,在問題中。 –

+0

如果客戶在這兩天中沒有花費任何東西,該怎麼辦? –

回答

2

您可以將表加入自己;這會給你你想要的數據,但在格式

UserID, AmountSpentSat, AmountSpentMon 

的SQL:

select p1.Customer, p1.cost as AmountMon, p2.cost as AmountSat 
from purchases p1, purchases p2 
where p1.customer = p2.customer 
and p1.date = "Mon" 
and p2.date = "Sat" 

這裏是它的工作sqlfiddle:http://sqlfiddle.com/#!2/367ef/1

注意我添加了一個新客戶( 4)誰只在星期六購物並且它能正常工作。

+0

謝謝你教我SQLFiddle是一件事!優秀的資源! – DopeGhoti

相關問題