如何检查表列中的三个日期是不是连续月份
Posted
技术标签:
【中文标题】如何检查表列中的三个日期是不是连续月份【英文标题】:how to check if the three dates in a table column has continuous months如何检查表列中的三个日期是否连续月份 【发布时间】:2014-01-31 06:50:36 【问题描述】:我有一个表,其列名 date_tran 显示用户进行任何交易的日期。有什么办法可以检查用户进行的 3 笔交易是在同一个月还是连续 3 个月?
我正在使用以下 sn-p:
SELECT CUST_ID, DATE_TRAN FROM FAKE_CUST F WHERE
EXISTS(
SELECT 1 from FAKE_CUST where (TO_CHAR(DATE_TRAN,'MM') = TO_CHAR(F.DATE_TRAN,'MM')-1 OR TO_CHAR(DATE_TRAN,'MM') = TO_CHAR(F.DATE_TRAN,'MM')) AND
CUST_ID= F.CUST_ID AND TO_CHAR(DATE_TRAN,'YYYY')=TO_CHAR(F.DATE_TRAN,'YYYY'))
and exists(
SELECT 1 from FAKE_CUST where (TO_CHAR(DATE_TRAN,'MM') = TO_CHAR(F.DATE_TRAN,'MM')-2 OR TO_CHAR(DATE_TRAN,'MM') = TO_CHAR(F.DATE_TRAN,'MM')) AND
CUST_ID= F.CUST_ID AND TO_CHAR(DATE_TRAN,'YYYY')=TO_CHAR(F.DATE_TRAN,'YYYY'))
但显示的是表中的所有条目,而不是所需的结果。
【问题讨论】:
【参考方案1】:用户在同一个月内完成了 3 笔交易
类似... 按 getmonth(DATE_TRN) 分组, count(getmonth(DATE_TRN)) >= 3
SELECT CUST_ID, DATE_TRAN FROM XXX where cust_id in (SELECT cust_id from XXX Group By DATE_FORMAT(DATE_TRAN, '%m') 有 count(DATE_FORMAT(DATE_TRAN, '%m')) > 2)
用户在 3 个缺点月内完成了 3 笔交易
按 getmonth(DATE_TRN) 分组,count(getmonth(DATE_TRN)) > 1, count(getmonth(DATE_TRN)-1) > 1, count(getmonth(DATE_TRN)-2) > 1
【讨论】:
我正在用 oracle 编写查询。我将您的查询修改为,但这不起作用 SELECT CUST_ID, DATE_TRAN FROM fake_cust where cust_id in (SELECT cust_id from fake_cust Group By EXTRACT(MONTH FROM DATE_TRAN) 有 (count(EXTRACT(MONTH FROM DATE_TRAN)) > 1 AND count(EXTRACT(MONTH FROM DATE_TRAN)-1) > 1 AND count(EXTRACT(MONTH FROM DATE_TRAN)-2) > 1 ))以上是关于如何检查表列中的三个日期是不是连续月份的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Presto 中获取连续日期,其中一列中的开始日期和另一列中的结束日期