餐桌人物
id | name | age
---------------
1 | max | 30
2 | sue | 28
3 | ada | 22
4 | sam | 31
5 | test | 0
桌男
id | personid
--------------
1 | 1
2 | 4
3 | 5
桌女
id | personid
--------------
1 | 2
2 | 3
3 | 5
如何获得这样的输出?因此,一列(性别)应该与另一个表中的存在以及输出有关。
name | gender
-------------
max | M
sue | F
ada | F
sam | M
test | X
答案 0 :(得分:1)
尝试使用嵌套的IIF语句进行以下操作:
SELECT p.[Name], IIF(m.ID IS NOT NULL AND f.ID IS NOT NULL, 'X', IIF(m.ID IS NOT NULL, 'M', 'F')) AS Gender
FROM Person p
LEFT OUTER JOIN Male m ON p.ID = m.PersonID
LEFT OUTER JOIN Female f ON p.ID = f.PersonID
答案 1 :(得分:1)
您可以使用CASE语句从性别表中进行查找,如下所示:
SELECT a.name,
CASE WHEN EXISTS (SELECT personid FROM TableMale b WHERE b.personid = a.ID) THEN 'M'
WHEN EXISTS (SELECT personid FROM TableFemale c WHERE c.personid = a.ID) THEN 'F'
END AS Gender
FROM TablePerson a
答案 2 :(得分:1)
Personid 5是男性还是女性。我不想丢失此信息。所以:
select p.name,
(case when m.personid is not null and f.personid is not null
then 'X' -- both
when m.personid is not null
then 'M'
when f.personid is not null
then 'F'
end) as gender
from person p left join
male m
on p.id = m.personid left join
female f
on p.id = f.personid;