我有一个包含四列的表:Account#,Card#,CardNameType和持卡人姓名。 CardNameType字段将标识卡的所有者。如果它等于0,我想从FATHER表中获取名称;如果它是1,从MOTHER表中获取它;如果它是2,从CHILD表中获取它。每个表都有一个Account#的主键,每个Account#可以有多个Card#s。
我怎么能这样做? CASE声明是否有效或者最佳方式是什么?
编辑:对不起,我误解了数据。你给我的解决方案我不相信会奏效。父亲和母亲的名字出现在同一张桌子上。例如,如果父亲或者母亲有一张卡片,则会在表格中显示两条记录(一条用于父亲,一条用于母亲)但是,如果该卡用于儿童,那么它就在另一张桌子中。我需要一种方法来使我能够只检索母亲或父亲或孩子。答案 0 :(得分:2)
是的,这听起来像是最好利用的案例陈述。
如:
SELECT CASE c.CardNameType
WHEN 0 THEN f.Name
WHEN 1 THEN m.Name
WHEN 2 THEN c.Name
END AS [Card Owner]
FROM
Card c
INNER JOIN
Father f ON f.Account# = c.Account#
.
.
.