【发布时间】:2015-12-08 13:40:16
【问题描述】:
我似乎无法得到这个,最后决定寻求帮助。因此,我们需要从在 Store 25 和 Store 50 购物至少 10 次的人中找到客户 ID 列表。
首先,我创建了一个代码来创建一个表格,其中包含客户 ID 列表和他们在该商店购物的次数。原始交易数据对于每笔交易(对于购买的每件商品)都有多行,因此是 distinctTransactions 表。
然后我尝试在 CustomerID 上内连接两个商店表并输入 > 9 个条件。
我收到错误消息“指定的字段 'CustomerID' 可能引用 SQL 语句的 FROM 子句中列出的多个表。”对我来说,这没有意义,因为我加入了 CustomerID 下的两个表。
如果有人能解释问题出在哪里以及正确响应背后的逻辑,我将不胜感激!此外,如果这段代码很接近,我是否需要两个单独的 distinctTransactions 表(注意我创建的第二个 distinctTransactionsc 只是为了让它使用不同的名称)?
SELECT CustomerID, Store25.ShopCount AS 25, Store50.ShopCount AS 50
FROM (SELECT CustomerID, COUNT(distinctTransactions.TransactionID) AS ShopCount
FROM (SELECT DISTINCT TransactionID, CustomerID, StoreID
FROM TransactionT) AS distinctTransactions
WHERE StoreID = 25
GROUP BY CustomerID) AS Store25
INNER JOIN
(SELECT CustomerID, COUNT(distinctTransactionsc.TransactionID) AS ShopCount
FROM (SELECT DISTINCT TransactionID, CustomerID, StoreID
FROM TransactionT) AS distinctTransactionsc
WHERE StoreID = 50
GROUP BY CustomerID) AS Store50
ON Store25.CustomerID = Store50.CustomerID
WHERE Store25.ShopCount > 9
AND Store50.ShopCount > 9
ORDER BY CustomerID
【问题讨论】: