【问题标题】:Oracle : Date Checking is used last 6months or notOracle:过去 6 个月是否使用日期检查
【发布时间】:2017-01-24 08:08:55
【问题描述】:

我有表“CONTACT”,如果联系人 createddate 过去 6 个月没有在其他表中使用,我需要删除联系人,有人可以帮忙解决这个问题吗?

【问题讨论】:

  • 我知道你有一个问题。但我不知道你在问什么。在一段时间内在其他表格中使用日期对您意味着什么?一个可重现的测试用例(ddl、dml、预期结果)可能会有所帮助。
  • 这里你可以找到一些关于How to Ask的建议以及如何建立一个minimal reproducible example
  • @JustinCave 2 张桌子 - 联系方式和订单。如果今天创建了联系人并且 contactId 用于 ORDERS 表中的任何订单,则表示 np.如果最近 6 个月的任何订单都没有使用联系人 ID,则意味着我需要删除 CONTACT 表中的条目。
  • 请使用这些详细信息编辑问题,不要添加 cmets。表结构、一些示例数据以及您迄今为止尝试过的内容也应该包括在内

标签: oracle date


【解决方案1】:

如果您想识别过去 6 个月内没有订单的联系人

select c.contact_id
  from contact c
 where not exists( select 1
                     from orders o
                    where o.contact_id = c.contact_id
                      and o.order_date > add_months(sysdate,-6) )

删除行

delete from contact c
 where not exists( select 1
                     from orders o
                    where o.contact_id = c.contact_id
                      and o.order_date > add_months(sysdate,-6) )

话虽如此,您似乎不太可能想要这样做。如果您有一个合理的数据模型,删除联系人将意味着您必须删除任何超过 6 个月的订单,这似乎是个坏主意。在这种情况下,将active_flag 设置为“N”可能更有意义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 2011-03-18
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    相关资源
    最近更新 更多