[英]Find all possible combinations column value in ORACLE SQL
您能否幫我解決以下查詢:
我有下面的數據表。
雇員編號 | 姓名 | 城市 |
---|---|---|
1 | 約翰 | 我們 |
2 | 米蘭達 | 我們 |
3 | 皮特 | 我們 |
4 | 傑克 | 我們 |
5 | 凱西 | 英國 |
6 | 坦尼 | 英國 |
7 | 莎莉 | 阿聯酋 |
我想要 output 如下所示:
城市 | 名稱1 | 名稱2 |
---|---|---|
我們 | 約翰 | 米蘭達 |
我們 | 約翰 | 皮特 |
我們 | 約翰 | 傑克 |
我們 | 米蘭達 | 皮特 |
我們 | 米蘭達 | 傑克 |
我們 | 皮特 | 傑克 |
英國 | 凱西 | 坦尼 |
PLSQL 我們可以寫塊來得到這個 output。 但是是否可以單獨使用 SQL 代碼獲得 output ?
看起來像一個自我加入。
SQL> with temp (empno, name, city) as
2 (select 1, 'John' , 'US' from dual union all
3 select 2, 'Miranda', 'US' from dual union all
4 select 3, 'Pete' , 'US' from dual union all
5 select 4, 'Jack' , 'US' from dual union all
6 select 5, 'Kathy' , 'UK' from dual union all
7 select 6, 'Tanni' , 'UK' from dual union all
8 select 7, 'Sally' , 'UAE' from dual
9 )
10 select a.city, a.name, b.name
11 from temp a join temp b on a.city = b.city and a.name < b.name
12 order by a.city, a.name;
CIT NAME NAME
--- ------- -------
UK Kathy Tanni
US Jack Miranda
US Jack John
US Jack Pete
US John Pete
US John Miranda
US Miranda Pete
7 rows selected.
SQL>
with
input_table (empno, name, city) as (
select 1, 'John' , 'US' from dual union all
select 2, 'Miranda', 'US' from dual union all
select 3, 'Pete' , 'US' from dual union all
select 4, 'Jack' , 'US' from dual union all
select 5, 'Kathy' , 'UK' from dual union all
select 6, 'Tanni' , 'UK' from dual union all
select 7, 'Sally' , 'UAE' from dual
)
-- end of sample data (for testing only, not part of the query)
-- remove WITH clause and use your actual table name below
select t1.city, t1.name as name1, t2.name as name2
from input_table t1 inner join input_table t2
on t1.city = t2.city and t1.empno < t2.empno
order by t1.empno, t2.empno -- if needed
;
CITY NAME1 NAME2
----- -------- --------
US John Miranda
US John Pete
US John Jack
US Miranda Pete
US Miranda Jack
US Pete Jack
UK Kathy Tanni
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.