【问题标题】:Using group by subquery to deduplicate record set使用 group by 子查询去重复记录集
【发布时间】:2013-06-25 16:12:29
【问题描述】:

我想知道如何使用如下查询将活动 ID 返回到父查询,以对父记录集进行重复数据删除。这里的问题是,我找不到方法来使用这个 group by 或 distinct。

我将使用所有 group by 字段来确定唯一记录。但是,我只需要使用带有 select min(status.effective_date) 的记录

查询返回正确的日期值,但我无法将其链接回仅包含该日期值的父母活动记录。

select min(status.effective_date) 
  from accounts 
     , address 
     , activity 
     , status 
 where accounts.par_row_id = activity.account_id 
   and address.row_id = activity.address_id
   and status.par_row_id = activity.status_id                                        
   and account.name = 'xyz'
 group by account.name, address.addr, address.ADDR_LINE_2, address.ADDR_LINE_3
        , address.ADDR_LINE_4, address.CITY, address.COUNTRY, address.X_STATE
        , address.ZIPCODE

【问题讨论】:

  • 欢迎来到 SO。请阅读本文以了解如何提出问题 - stackoverflow.com/questions/how-to-ask 您需要包含相关的表模式、一些示例、数据和预期输出。
  • 您需要选择与 GROUP BY 相同的记录...否则您如何获得想要唯一的数据?

标签: oracle group-by subquery min


【解决方案1】:

你应该试试这个查询:

select min(activity.row_id) keep(dense_rank first order by status.effective_date) as activity_id
from accounts
, address
, activity
, status
where accounts.par_row_id = activity.account_id 
and address.row_id = activity.address_id
and status.par_row_id = activity.status_id
and accounts.name = 'xyz'
group by accounts.name, address.addr, address.ADDR_LINE_2, address.ADDR_LINE_3
    , address.addr_line_4, address.city, address.country, address.x_state
    , address.ZIPCODE;

【讨论】:

    猜你喜欢
    • 2021-07-20
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多