如果之前已经提出这个问题,请原谅我,但我根本没有足够的词汇来搜索我在数据库中作为新手所需要的东西。
我正在使用SQL Server 2008。
我有一个包含多个列的表tblPDCDetails
。其中一列PDCof
包含值:
"A"(for applicant),
"C" for coapplicant,
"G" (for Guarantor).
另一列HolderID
拥有uniqueid(持有者)。
PDCHolders
位于各自的表格中:tblApplBasicDetails
中的申请人,CoApllicants
位于自己的表格中,等等。
现在我需要的是如何根据PDCof
列中的值来从各自的表格中检索持有者的姓名。
我可以这样做吗? 如果没有,我该如何解决这个问题?
答案 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
取决于您是每天运行几次,还是每小时运行几千次