繁体   English   中英

SQL查询来自同一个表的相关数据行

[英]SQL query for related rows of data from the same table

我试图了解如何编写可以从同一个表返回相关数据行的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'但这似乎不太令人满意,因为它取决于数据库给出结果的顺序而购买可能没有发生在星期六和星期一。

我为此目的调查了联盟和联盟,但他们似乎关注来自多个表的数据。

我确信有一种解决这个问题的标准方法。

你可以把桌子加到自己身上; 这将为您提供所需的数据,但格式为

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"

这是一个有效的方法: http ://sqlfiddle.com/#!2/367ef/1

注意我添加了一个新客户(4),他只在星期六购物并且工作正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM