CREATE TABLE PEOPLE
(
"ID" NUMBER(*,0) NOT NULL ENABLE,
"NAME" VARCHAR2(30 BYTE)。
"GENDER" VARCHAR2(3 BYTE)。
PRIMARY KEY ("ID")
)
創建 TABLE RELATIONS
(
"C_ID" NUMBER(*,0) NOT NULL ENABLE,
"P_ID" NUMBER(*,0) NOT NULL ENABLE
)
INSERT INTO PEOPLE (ID, NAME, GENDER) VALUES (107, 'days', 'F')。
INSERT INTO PEOPLE (ID, NAME, GENDER) VALUES (145, 'HB', 'M') 。
INSERT INTO PEOPLE (ID, NAME, GENDER) VALUES (155, 'HANSEL'/span>, 'F')。
INSERT INTO PEOPLE (ID, NAME, GENDER) VALUES (202, 'BLACKSTON', 'M') 。
INSERT INTO PEOPLE (ID, NAME, GENDER) VALUES (227, 'CRISS'/span>, 'F')。
INSERT INTO PEOPLE (ID, NAME, GENDER) VALUES (278, 'KEFFER', 'M') 。
INSERT INTO PEOPLE (ID, NAME, GENDER) VALUES (305, 'CANTY'/span>, 'F'/span>)。
INSERT INTO PEOPLE (ID, NAME, GENDER) VALUES (329, 'MOZINGO'/span>, 'F'/span>)。
INSERT INTO PEOPLE (ID, NAME, GENDER) VALUES (425, 'NOLF', 'F') 。
INSERT INTO PEOPLE (ID, NAME, GENDER) VALUES (534, 'WAUGH'/span>, 'F')。
INSERT INTO PEOPLE (ID, NAME, GENDER) VALUES (586, 'TONG', 'F') 。
INSERT INTO PEOPLE (ID, NAME, GENDER) VALUES (618, 'dimmi', 'F')。
INSERT INTO PEOPLE (ID, NAME, GENDER) VALUES (747, 'BEANE', 'F')。
INSERT INTO PEOPLE (ID, NAME, GENDER) VALUES (878, 'CHATMON'/span>, 'F')。
INSERT INTO PEOPLE (ID, NAME, GENDER) VALUES (904, 'HANSARD'/span>, 'F')。
INSERT INTO RELATIONS (C_ID, P_ID) VALUES (145, 202)。
INSERT INTO RELATIONS (C_ID, P_ID) VALUES (145, 107)。
INSERT INTO RELATIONS (C_ID, P_ID) VALUES (278, 305)。
INSERT INTO RELATIONS (C_ID, P_ID) VALUES (278, 155)。
INSERT INTO RELATIONS (C_ID, P_ID) VALUES (329, 227)。
INSERT INTO RELATIONS (C_ID, P_ID) VALUES (534, 586)。
INSERT INTO RELATIONS (C_ID, P_ID) VALUES (534, 878)。
INSERT INTO RELATIONS (C_ID, P_ID) VALUES (618, 747)。
INSERT INTO RELATIONS (C_ID, P_ID) VALUES (618, 904)。
INSERT INTO RELATIONS (C_ID, P_ID) VALUES (329,425)。
預期輸出(注意:孩子、父親和母親是別名)
child father mother
------------------------
迪米-貝恩-漢薩德
河北黑石天
科弗爾-坎蒂-漢塞爾
Mozingo Nolf Criss
Waugh Tong Chatmon
uj5u.com熱心網友回復:
這里有一個方法可以做到這一點
select p.name as child
,max(case when p2. gender='F' then p2.name end) as mother
,max(case when p2. gender='M' then p2.name end) as father
from關系r
加入人 p
on r.c_id=p.id
join people p2
on r.p_id=p2.id
group by p.name
uj5u.com熱心網友回復:
同性夫妻 -- 這使得這個問題很有趣。
同性夫妻 -- 這是一個有趣的問題。
select child。
max(case when seqnum = 1 then pp。 name end) 作為母親。
max(case when) keyword">when seqnum = 2 then pp。 name end) as father
from (select pc.name as child, pp.gender, pp.name。
row_number() over (partition by r. c_id order by pp.gender) as seqnum
from關系r join
人數 pc
on r.c_id = p.id join
人 pp
on r.p_id = p2.id
) x
group by child。
注意,你可以使用類似的邏輯來獲得父母的性別:
max(case when seqnum = 1 then pp。 性別 end) as mother_gender,
max(case when) keyword">when seqnum = 2 then pp。 性別 end) as father_gender
當然,你可以直接呼叫父母parent1和parent2。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/331274.html
標籤:
