首页 > 解决方案 > Oracle在2个表查询中只选择一个非重复项

问题描述

我有 2 张桌子

a) 在 col1 唯一值上标准化表

col1 col2 col3 col4 col5
10    j     u    c   z
20    r     y    b   k

b) 表有多个 col1 值来自 a

col1 col2 col3 col4 col5
10    l   m     k   j
10    3   4     5   7
10    b   v     c   b
20    a   s     d   c

当我运行查询时,我的结果显示表 b 中的多个条目。我需要按 col1 分组,但分组显示消息 ORA-00979: not a GROUP BY expression

Select cec.CLAIMNUM , cec.CLAIMNUM, cec.CLAIMID, cec.PROVIDERID, cec.PHYSICIANNAME,cec.PATIENTID ,cec.PATIENTFIRSTNAME || ' '||cec.PATIENTLASTNAME , cec.TOTALCHARGES , 
(Select Sum(TO_NUMBER (VALUESTRING)) from PRICINGMSGS pr where pr.CLAIMNUM = cec.CLAIMNUM and errorcode = 610000) as UCR,  
(SELECT Sum(SUBSTR(VALUESTRING, INSTR(VALUESTRING, '|')+1 ) )
FROM PRICINGMSGS p  where p.CLAIMNUM =cec.CLAIMNUM and errorcode = 610001)AS Medicare

 from CECLAIMS cec ,PRICINGMSGS price where 
 cec.CLAIMNUM = price.CLAIMNUM and
 cec.ACCTNUMBER = price.ACCTNUMBER and
cec.ACCTNUMBER ='TEST0001'   
group by cec.CLAIMNUM

标签: sqloracleplsqlplsqldeveloper

解决方案


在您的查询中,您在 select 子句中使用了cec.claimnum(在 中)以外的列。group by

请记住一条规则,如果您group by在查询中使用,那么您只能columns直接select使用 in 中使用的 in 子句group by。所有其他列必须与aggregate函数一起使用。

SELECT COL1, 
       COL2, 
       AGGREGATE_FUNCTION(COL3) AS COL3,
       ...
  FROM YOUR TABLE
 GROUP BY COL1, COL2

干杯!!


推荐阅读