如果客户在第1阶段购买了某些产品,那么他们在第2阶段购买了什么?

时间:2018-12-19 22:41:04

标签: sql-server

我正在尝试创建一个查询,以查看如果客户在期间1购买了产品1、2、3、4或5,则在期间2购买了哪些产品。

我正在使用列

处理DimProduct
CustomerID, PeriodID, ProductID

我已经尝试过一些混乱的IFWHERE语句,但无法弄清楚。任何提示将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:0)

也许您需要这样的东西?

SELECT DISTINCT p2.ProductID
FROM DimProduct p2
WHERE p2.PeriodID = 2 and 
    EXISTS (SELECT TOP 1 1 FROM DimProduct as p1
            WHERE p1.PeriodID = 1 and p1.ProductID in (1,2,3,4,5)
                and p1.CustomerID = p2.CustomerID);

(如果脚本不起作用,请修复它。这只是一个主意)

答案 1 :(得分:0)

您可以在客户ID上将DimProduct加入自身,并将过滤条件添加到WHERE子句中。像这样的东西会满足您的需求。

SELECT DISTINCT p2.ProductID
FROM DimProduct p2
INNER JOIN DimProduct p1 ON p1.CustomerID = p2.CustomerID
WHERE p2.PeriodID = 2 
AND p1.PeriodID = 1
AND p1.ProductID in (1,2,3,4,5)