SELECT Person_ID, CONCAT('First_name','Surname') AS "Person_Name", Next_of_kin, '~ No next of kin ~' AS Next_of_kin_name, Next_of_kin_age AS NULL
FROM PERSON
WHERE Next_of_kin IS NULL
UNION
SELECT Childs.Person_ID, CONCAT('Childs.First_name','Childs.Surname') AS "Person_name", Next_of_kin, CONCAT('Fathers.First_name','Fathers.Surname') AS "Next_of_kin_name",TO_CHAR(sysdate, 'YYYY') - TO_CHAR(Fathers.birth_date, 'YYYY')
(TO_CHAR(sysdate, 'YYYY')- TO_CHAR(Birth_date, 'YYYY')) AS Next_of_kin_age
FROM Person Childs, Person Fathers
WHERE Childs.next_of_kin = Fathers.Person_ID
AND TO_CHAR(sysdate, 'YYYY') - TO_CHAR(Fathers.birth_date, 'YYYY') >= 50;发布于 2021-06-07 15:36:00
NULL返回,但实际上您希望返回值作为Next_of_kin_age.的NULL
作为Next_of_kin_age的TO_CHAR(sysdate,'YYYY')- TO_CHAR(Fathers.birth_date,'YYYY') (TO_CHAR(sysdate,'YYYY') - TO_CHAR(Birth_date,'YYYY'))
尝尝这个
SELECT Person_ID,
CONCAT('First_name','Surname') AS "Person_Name",
Next_of_kin,
'~ No next of kin ~' AS Next_of_kin_name,
NULL AS Next_of_kin_age
FROM PERSON
WHERE Next_of_kin IS NULL
UNION
SELECT Childs.Person_ID,
CONCAT('Childs.First_name','Childs.Surname') AS "Person_name",
Next_of_kin,
CONCAT('Fathers.First_name','Fathers.Surname') AS "Next_of_kin_name",
TO_CHAR(sysdate, 'YYYY') - TO_CHAR(Fathers.birth_date, 'YYYY') - (TO_CHAR(sysdate, 'YYYY') - TO_CHAR(Birth_date, 'YYYY')) AS Next_of_kin_age
FROM Person Childs, Person Fathers
WHERE Childs.next_of_kin = Fathers.Person_ID
AND TO_CHAR(sysdate, 'YYYY') - TO_CHAR(Fathers.birth_date, 'YYYY') >= 50;https://stackoverflow.com/questions/67867586
复制相似问题