sql - 如何找到购买产品 A 和 D 的客户间隔 > 6 个月?

标签 sql tsql

我需要更多高级 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/

相关文章:

SQL 2008 VS 2012错误: Incorrect syntax near the keyword 'COMPUTE'

tsql - "ROLLBACK TRANSACTION named_transaction"有什么意义?

mysql - 查询没有像预期的那样工作

sql - 没有重叠的行对

mysql - 如何以不同的方式排序

python - 将具有一些公共(public)字段的多个表组合成一个表

sql - 如何使用 DatePart 获取前导零?

sql - 一次查询中总和的平均值

mysql - 从数据库中获取前 5 名排名

sql - 非规范化 SQL 查询和组合列