【发布时间】:2019-02-07 21:36:54
【问题描述】:
我找不到可以帮助我返回以下内容的 WHERE 或 HAVING 条件:
如果用户在过去一个月内记录了活动,我想返回这些用户过去六 (6) 个月的记录。到目前为止,我一直在使用以下查询...
SELECT
USER,
CAST(ACTIVITY AS DATE),
COUNT(DISTINCT ACTIONS),
SUM(RESULTS)
FROM
TABLE
WHERE
ACTIVITY >= DATEADD(MONTH, -6, GETDATE())
GROUP BY
[conditions]
ORDER BY
[conditions]
我尝试过使用
HAVING
(COUNT(USER) * CAST(DATEADD(MONTH, -1, GETDATE()) AS DECIMAL)) > 0
但我收到了来自仅在过去六 (6) 个月内而不是当前或最近一个月内记录过操作的非活动用户的记录返回。
帮忙?!!
提前致谢,
【问题讨论】:
-
你不能一次完成所有事情,所以把你的目标分解成更小的部分。请记住,没有人了解您的业务或数据库,因此您需要使用其他人理解的术语。第 1 步 - 您如何找到在过去一个月内记录了活动的用户?具体定义应该使用什么逻辑。 “上个月”可以有多种解释方式,它可能取决于执行查询时的当前日期(或其他日期)。
-
欢迎来到 Stack Overflow!查看How to Ask 和minimal reproducible example,了解如何提高获得有用答案的机会。
标签: sql-server conditional sql-date-functions