如何解决SQL QUERY 显示自过去 6 个月以来没有任何交易的用户列表
请帮我获取自过去 6 个月以来没有任何交易的用户列表
我尝试使用下面的查询,仍然显示有当前交易的 ID 列表,但我想要过去 6 个月不活动的客户的详细信息,即。自过去 6 个月以来没有交易
select AST_ID,AST_VALUE_DATE,max(distinct(AST_VALUE_DATE)) from account_statement
having max(AST_VALUE_DATE)<='30-09-2020'
group by AST_ID,AST_VALUE_DATE
order by AST_VALUE_DATE desc;
任何人都可以帮助我哪里出错了吗?
解决方法
我想你只是想要:
select AST_ID,max(LAST_VALUE_DATE) as LAST_VALUE_DATE
from account_statement
group by AST_ID
having max(LAST_VALUE_DATE) <= DATE '2020-09-30'
order by LAST_VALUE_DATE desc;
,
您正在按 ID 和日期分组; max(AST_VALUE_DATE)
始终与每一行的 AST_VALUE_DATE
相同。 (distinct 没有添加任何东西)。
您也是在与字符串进行比较,而不是与日期进行比较;依赖于隐式转换。
从选择列表和分组依据中删除额外的 AST_VALUE_DATE
,并与适当的日期进行比较,或者作为文字:
select AST_ID,max(AST_VALUE_DATE) as AST_VALUE_DATE
from account_statement
group by AST_ID
having max(AST_VALUE_DATE) < date '2020-09-30'
order by AST_VALUE_DATE desc;
或者从今天开始回顾六个月:
having max(AST_VALUE_DATE) < add_months(trunc(sysdate),-6)
或者从当月开始的六个月开始回顾:
having max(AST_VALUE_DATE) < add_months(trunc(sysdate,'MM'),-6)
根据您当前的字符串值,我认为这是您想要的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。