【发布时间】:2016-05-12 15:03:13
【问题描述】:
这是我的第一个 stackoverflow 问题,所以请保持温和 ;-)
我有一个包含唯一客户 ID 的表和一个包含特定交易类型(购买、预售等)的交易的表
我要统计的是所有做过一次特定交易类型的客户。但如果客户在 2014 年进行了符合条件的交易,我不希望该客户在 2015 年再次被计算在内。这有意义吗?
我尝试了以下说法:
SELECT
datepart(yyyy,t.TransactionDate)
,count(DISTINCT c.customerID)
FROM Customers as c
JOIN Transactions as t
ON c.CustomerID = t.CustomerID
WHERE t.TransactionType = 'presell'
GROUP BY datepart(yyyy,t.TransactionDate)
问题在于,当然,客户可以每年进行一次相同的交易类型。因此,在此声明中,我计算了每年不同的客户......而不是总共一次。
编辑:让我们让它更容易一些。只有一张桌子,这张桌子看起来有点像这样:
所以如果我过滤“预售”,我的结果应该看起来像这样
2014 年客户 A 进行了预售,2015 年客户 B 进行了预售,2016 年客户 A 再次进行了预售,但我没有计算这个客户,因为我在 2014 年已经计算过了。希望能让事情更清楚一点.
在这里感谢您的任何建议和帮助。
【问题讨论】:
-
当您说:“但是如果客户在 2014 年进行了符合条件的交易”,您的意思是您只想计算相隔 2 年的符合条件的交易吗?请详细说明
-
欢迎来到 Stackoverflow。在询问 SQL 问题时,如果您包含表结构、示例数据和预期输出,以及您所做的任何尝试以及它们如何不起作用(返回错误数据,给出错误等)。请看:stackoverflow.com/help/how-to-ask
-
正如 Tom H 所说,如果您冷包括 2 个表的示例,以及您期望从查询中获得的结果类型的示例,这将有很大帮助 :)
-
好的,谢谢您的建议。我编辑了我原来的问题。也许这有帮助
标签: sql tsql sql-server-2012