Oracle在2个表查询中仅选择一个非重复项

时间:2019-09-24 16:33:51

标签: sql oracle plsql plsqldeveloper

我有2张桌子

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

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

b)表具有来自

的col1的多个值
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:不是GROUP BY表达式

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

1 个答案:

答案 0 :(得分:1)

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

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

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

干杯!