1

如果以前有人问过这个问题,请原谅我,但我只是没有足够的词汇来搜索我作为数据库新手需要的东西。

我正在使用 SQL Server 2008。我有一个tblPDCDetails包含几列的表。其中一列PDCof包含值:

"A"(for applicant), 
"C" for coapplicant, 
"G" (for Guarantor). 

另一列HolderID保存唯一ID(持有人)。PDCHolders驻留在各自的表中: 中的申请人,tblApplBasicDetailsCoApllicants他们自己的表中,依此类推。

现在我需要的是如何根据PDCof列中的值从各自的表中检索持有人的姓名。

我能做到吗?如果没有,我应该如何解决这个问题?

4

2 回答 2

3

这应该这样做:

SELECT  A.*,
        COALESCE(B.Name,C.Name,D.Name) Name
FROM dbo.tblPDCDetails A
LEFT JOIN dbo.tblApplBasicDetails B
    ON A.HolderID = B.HolderID
    AND A.PDCof = 'A'
LEFT JOIN dbo.tblCoApplBasicDetails C
    ON A.HolderID = C.HolderID
    AND A.PDCof = 'C'
LEFT JOIN dbo.tblGuarantorlBasicDetails D
    ON A.HolderID = D.HolderID
    AND A.PDCof = 'G'
于 2013-09-10T12:32:22.627 回答
0

另一种选择是使用大小写开关:

Select case Main.PDCof
    when 'A' then (select HolderID from Applicants where main.value = value)
    when 'C' then (select HolderID from CoApplicants where main.value = value)
    when 'G' then (select HolderID from Guarantor where main.value = value)
    end
    ,main.*
from tblPDCDetails main

取决于您是每天运行几次还是每小时运行数千次

于 2013-09-10T15:14:35.943 回答