我有一张包含以下记录的表格。
acct_id | org_id | terr_id | segment 4
--------------------------------------
123 | A | 12345 | US
123 | A | 45678 | CA
456 | B | ABC | US
456 | B | XYZ | US
我需要在acct_id和org_id上分组并获取max(段4)的记录..虽然我需要在group by中省略terr_id,但我需要在输出中为相关的max(段4) 。如果不再次回到同一张桌子,我怎么能这样做呢?
o / p需要
acct_id | org_id | terr_id | segment 4
--------------------------------------
123 | A | 12345 | US
456 | B | ABC or XYZ | US
答案 0 :(得分:1)
WITH CTE AS (
SELECT Distinct acct_ID
, Org_ID
, Terr_ID
, Segment4
, row_number() over (partition by ACCT_ID, Org_ID order by terr_ID asc) RN
FROM Table
WHERE Terr_ID <> '45678')
SELECT *
FROM cte
WHERE RN = 1
答案 1 :(得分:0)
您可以使用内部联接,其分组为max(segment_4)
select acct_id , org_id , terr_id , segment_4
from my_table m
inner join (
select acct_id, org_id, max(segment_4 ) as my_segment_4
from my_table
group by acct_id, org_id
) t o t.acct_id = m.acct_id
and t.org_id = m.org_id
and t.my_segment_4 = m.segment_4