根据另一个字段值为另一个表中的值分配字段

时间:2012-02-06 13:53:46

标签: sql sql-server-2005

我有一个包含四列的表:Account#,Card#,CardNameType和持卡人姓名。 CardNameType字段将标识卡的所有者。如果它等于0,我想从FATHER表中获取名称;如果它是1,从MOTHER表中获取它;如果它是2,从CHILD表中获取它。每个表都有一个Account#的主键,每个Account#可以有多个Card#s。

我怎么能这样做? CASE声明是否有效或者最佳方式是什么?

编辑:对不起,我误解了数据。你给我的解决方案我不相信会奏效。父亲和母亲的名字出现在同一张桌子上。例如,如果父亲或者母亲有一张卡片,则会在表格中显示两条记录(一条用于父亲,一条用于母亲)但是,如果该卡用于儿童,那么它就在另一张桌子中。我需要一种方法来使我能够只检索母亲或父亲或孩子。

1 个答案:

答案 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#
.
.
.