假设我有两张table:
Customer -
ID | Name | Etc
1 | One |
2 | Two |
3 | Three |
4 | Four |
5 | Five |
... | ... |
Sales -
Customer ID | Date | Amount
5 | 1/20 | $45
5 | 3/19 | $145
3 | 8/19 | $453
7 | 3/20 | $4513
3 | 9/20 | ...
1 | 3/20 | ...
1 | 1/20 | ...
我要做的是编写一个查询,它将查找每个客户的第一笔销售。我不知道该怎么做。我觉得这是一组问题,但我没有找到答案。
编辑:我觉得我的第一个数据表没有完全解释我的问题(老实说,我甚至没有意识到我的问题的这一方面,直到,我编码的解决方案)注意:有一个以上的客户每销售。
Sales -
Sale ID | Customer ID | Date | Amount
1 | 5 | 1/20 | $45
5 | 5 | 3/19 | $145
8 | 3 | 8/19 | $453
7 | 7 | 3/20 | $4513
3 | 4 | 9/20 | ...
2 | 1 | 3/20 | ...
1 | 1 | 1/20 | ...
3条答案
按热度按时间ffx8fchx1#
您可以使用子查询为每个客户的每个销售分配行号,按升序日期排序,然后仅选择第一行:
sqlfiddle演示
blpfk2vs2#
尼克的解决方案可能是最有效的,但如果你想使用
GROUP BY
在这里,你可以这样做:vyswwuz23#
在oracle中,可以使用
keep
: