0

「選択した非集計値は関連付けられたグループの一部である必要があります」というエラーが発生します

「、current_date--pmnt_rlse_dt」という行を「DaysSincePaid」として追加すると、このエラーが発生し始めました。

それがgroupbyと関係があることは知っていますが、まだ理解できていません。

    select ee.alias_last_nm || ', ' || ee.alias_first_nm as "Custodian"
   ,clm.i_sys_clm
   ,clm.c_clm as "Claim Number"
   ,clm.i_pol as "Policy Number"
   ,clm.n_lst as "Last Name"
   ,clm.n_fst as "First Name"
   ,clm.c_sta_clm as "Status"
   ,mx_dt as "Last Payment Date"

from ltc_p.vltc_clm_mo clm

left join (select indiv_sorce_syst_cd
            ,sorce_upc_indiv_id
            ,alias_last_nm
            ,alias_first_nm
from edw_p.upc_indiv_alias_v2
where row_end_dt = '9999-12-31' and
indiv_sorce_syst_cd = 'ORG') ee
on clm.c_ams_clm = ee.sorce_upc_indiv_id

inner join(select sorce_claim_id
            ,max(pmnt_rlse_dt) as mx_dt
            ,current_date - pmnt_rlse_dt as "Days Since Paid"
from ltc_p.claim_pmnt pp

having  max(pmnt_rlse_dt) is not null) as d
on clm.i_sys_clm = d.sorce_claim_id

where clm.c_sta_clm = 'AC'
order by 1,2
4

2 に答える 2

1

エラー メッセージは、GROUP BY 句を使用せずMAXに派生テーブル クエリで関数を使用することに関連しています。d

ただし、各ソース ID の最大 pmnt_rlse_dt を返すことが目的であると推測しています。もしそうなら、OLAPウィンドウ関数を使用するこれを試してください:

inner join(
   select  sorce_claim_id
         , pmnt_rlse_dt   as mx_dt
         , current_date - pmnt_rlse_dt as "Days Since Paid" 
   from    ltc_p.claim_pmnt
   where   pmnt_rlse_dt is not null
   qualify row_number() over (partition by sorce_claim_id
                              order by pmnt_rlse_dt desc) = 1
   ) as d 

QUALIFY表現を完全に理解するには少し時間がかかりますが、非常に強力です。

于 2012-08-17T14:03:36.277 に答える
0

groupby句を使用しないでください。

データをグループ化する場合は、maxやhaingなどの集計関数のみを使用できます。

于 2012-08-17T13:20:02.120 に答える