可能是一個愚蠢的問題,但現在是星期天,我的大腦無法正常作業。我正在嘗試使用分析函式來獲得以下內容
我有這個查詢(這只是一條記錄的一個小例子,但足以解釋我要解釋的內容)
select h.party_number,organization_name,address_line1,address_type
,row_number() over(partition by party_number,organization_name,address_line1 order by address_line1,address_type ) as newrn
from h
where party_number = 'FI-110584'
order by address_type,party_number;
這給了我這個結果

我真正想要的是party_number、organization_name 和 adress_line1 的組合具有相同的排名(所以相同的數字)
所以,最后一列應該看起來像
1
1
2
因為相同的party_number、organization_name 和address_line 應該被賦予相同的排名值。
我應該在這里使用什么分析函式?我試過了dense_rank,rank但沒有成功。
謝謝你們
uj5u.com熱心網友回復:
對我來說,它看起來DENSE_RANK 沒有 ADDR您正在尋找的列:
SQL> with test (party, org, addr) as
2 (select 'fi-11', 'neka', 'golfe 4' from dual union all
3 select 'fi-11', 'neka', 'golfe 4' from dual union all
4 select 'fi-11', 'neka', 'pl 100' from dual
5 )
6 select t.*,
7 dense_rank() over (partition by party, org order by addr) rnk
8 from test t
9 order by addr;
PARTY ORG ADDR RNK
----- ---- ------- ----------
fi-11 neka golfe 4 1
fi-11 neka golfe 4 1
fi-11 neka pl 100 2
SQL>
uj5u.com熱心網友回復:
您的磁區和排序有點偏離:
select h.party_number,organization_name,address_line1,address_type
,dense_rank() over(partition by party_number,organization_name order by address_line1 ) as newrn
from h
where party_number = 'FI-110584'
order by address_type,party_number;
| PARTY_NUMBER | 機構名稱 | 地址第一行 | 地址型別 | 紐恩 |
|---|---|---|---|---|
| FI-110584 | 內卡帕諾公司 | 高爾夫球場 4 | 默認 | 1 |
| FI-110584 | 內卡帕諾公司 | 高爾夫球場 4 | 加法 | 1 |
| FI-110584 | 內卡帕諾公司 | PL 100 | 添加 | 2 |
db<>小提琴
uj5u.com熱心網友回復:
您需要 DENSE_RANK 而不是 ROW_NUMBER -
SELECT h.party_number,
organization_name,
address_line1,
address_type,
DENSE_RANK() OVER(PARTITION BY party_number,organization_name,address_line1 ORDER BY address_type) as newrn
FROM h
WHERE party_number = 'FI-110584'
ORDER BY address_type, party_number;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/434216.html
下一篇:多列的sqlcase條件
