你能幫我解決這個下面的查詢嗎:
我有下表。
| 員工編號 | 名稱 | 城市 |
|---|---|---|
| 1 | 約翰 | 我們 |
| 2 | 米蘭達 | 我們 |
| 3 | 皮特 | 我們 |
| 4 | 杰克 | 我們 |
| 5 | 凱西 | 英國 |
| 6 | 坦尼 | 英國 |
| 7 | 莎莉 | 阿聯酋 |
我想要如下輸出:
| 城市 | 姓名1 | 姓名2 |
|---|---|---|
| 我們 | 約翰 | 米蘭達 |
| 我們 | 約翰 | 皮特 |
| 我們 | 約翰 | 杰克 |
| 我們 | 米蘭達 | 皮特 |
| 我們 | 米蘭達 | 杰克 |
| 我們 | 皮特 | 杰克 |
| 英國 | 凱西 | 坦尼 |
PLSQL 我們可以寫塊來得到這個輸出。但是是否可以單獨使用 SQL 代碼獲得輸出?
uj5u.com熱心網友回復:
看起來像一個自連接。
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>
uj5u.com熱心網友回復:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/388833.html
