2014-01-09 204 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

相关问题