根据列中的值检索不同表中的数据

时间:2013-09-10 12:22:54

标签: sql-server sql-server-2008

如果之前已经提出这个问题,请原谅我,但我根本没有足够的词汇来搜索我在数据库中作为新手所需要的东西。

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

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

另一列HolderID拥有uniqueid(持有者)。 PDCHolders位于各自的表格中:tblApplBasicDetails中的申请人,CoApllicants位于自己的表格中,等等。

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

我可以这样做吗? 如果没有,我该如何解决这个问题?

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分: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

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