在Oracle中按一列选择不同,但也显示多列

时间:2019-05-14 19:18:31

标签: sql oracle

我有这个查询:

    select DISTINCT cpc.EXTRACT_ID, cpc.OS_ID,...,cpvi.VOYAGE_STRT_DT, 
cpob.FISCAL_MONTH_START_DT from CPOB_PROCESS_CTRL cpc
    inner join CPOB_PLY_OUTSTD_BAL cpob on cpc.BRAND_NAME
 = cpob.BRAND_ID and cpc.SHIP_NAME = cpob.SHIP_NAME
    inner join CPOB_VOYAGE_INFO cpvi on cpc.VOYAGE_ID = cpvi.VOYAGE_ID 

问题是我希望在结果上不重复列cpc.EXTRACT_ID。 当我在查询中仅选择cpc.EXTRACT_ID时,结果是准确的,并且该查询不包含cpc.EXTRACT_ID的重复结果

   select DISTINCT cpc.EXTRACT_ID from CPOB_PROCESS_CTRL cpc
        inner join CPOB_PLY_OUTSTD_BAL cpob on cpc.BRAND_NAME
     = cpob.BRAND_ID and cpc.SHIP_NAME = cpob.SHIP_NAME
        inner join CPOB_VOYAGE_INFO cpvi on cpc.VOYAGE_ID = cpvi.VOYAGE_ID 

但是我在结果中也需要其他字段,我不在乎其他字段是否重复,只是cpc.EXTRACT_ID。如何将第一个脚本更改为想要的结果?

1 个答案:

答案 0 :(得分:1)

如果您不关心其他列,请汇总它们,例如

select cpc.EXTRACT_ID, 
       max(cpc.OS_ID) os_id,
       max(cpvi.VOYAGE_STRT_DT) voyage_strt_dt,
       max(cpob.FISCAL_MONTH_START_DT) fiscal_month_start_dt
from ...
group by cpc.extract_id

如果这不是您想要的,请发布一些示例数据和所需结果。这可能会帮助我们帮助您。