我需要更多高级 SQL 专家的建议。
我被要求创建一个报告,显示购买了产品 105 和 的客户。谁在 6 个多月后购买了产品 312 .
例如,我有以下 Orders 表:
RecID CustID ProdID InvoiceDate
1 20 105 01-01-2009
2 20 312 01-04-2009
3 20 300 04-20-2009
4 31 105 07-10-2005
5 45 105 10-03-2007
6 45 300 11-10-2007
7 45 312 08-25-2008
我需要一份查看此表并返回的报告:
CustID ElapsedDays
45 327
我是否需要使用游标并逐条记录迭代,并在进行时比较日期?
如果是这样,游标过程会是什么样子?我没有使用过游标,尽管我已经做了多年的程序编程。
谢谢!
最佳答案
你上面有一些很好的答案;自加入是要走的路。我想建议你如何最好地思考这样的问题。如果您在不同的表中购买了产品 A 和 D 怎么办?并不是说您应该以这种方式存储数据,而是应该以这种方式考虑数据。如果你这样做了,你可以在客户 ID 上加入 product_a_purchases 到 product_d_purchases 并比较日期。因此,出于查询的目的,这就是您需要生成的内容。不是 product_a_purchases 的实际磁盘表,而是您的购买表中的记录表,其中仅包含产品 A 的购买,产品 D 也是如此。这就是自联接的来源。
关于sql - 如何找到购买产品 A 和 D 的客户间隔 > 6 个月?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4960337/