[英]Case statement in Join Clause
我試圖從多個表中獲取數據,但不知道如何做到這一點。 下面是我正在使用的查詢,但它不起作用。 請建議。
SELECT DISTINCT
VWL.Type, VWL.ID AS CompanyID,VWL.Name
FROM dbo.LeadList_New AS VWL
LEFT OUTER JOIN
CASE VWL.Type WHEN 'COMPANY' THEN
CRMCompanyEmailAddress AS CE ON VWL.ID=CE.CRMCompanyID
WHEN 'PERSON' THEN
PersonEmailAddress AS PE ON VWL.ID=PE.PersonID
END
你不能用CASE
連接表,也許你想要這樣:
SELECT DISTINCT VWL.Type, VWL.ID AS CompanyID, VWL.Name,
CASE WHEN VWL.type = 'COMPANY'
THEN CE.Name
ELSE PE.Name
END AS EntityName
FROM dbo.leadlist_new AS VWL
LEFT OUTER JOIN crmcompanyemailaddress AS CE
ON VWL.id = CE.crmcompanyid
LEFT OUTER JOIN personemailaddress AS PE
ON VWL.id = PE.personid
您應該將CASE語句移動到SELECT主體中:
SELECT DISTINCT
VWL.Type, VWL.ID AS CompanyID,VWL.Name
case VWL.Type
when 'COMPANY' then CE.Address
when 'PERSON' then PE.Address
end
FROM dbo.LeadList_New AS VWL
LEFT OUTER JOIN CRMCompanyEmailAddress as CE on VWL.ID=CE.CRMCompanyID
LEFT OUTER JOIN PersonEmailAddress as PE on VWL.ID=PE.PersonID
或者只是UNION公司和人員的兩份陳述
SELECT VWL.Type, VWL.ID AS CompanyID,VWL.Name,CE.Address as Address
FROM dbo.LeadList_New AS VWL
LEFT OUTER JOIN CRMCompanyEmailAddress as CE on VWL.ID=CE.CRMCompanyID
WHERE VWL.Type='COMPANY'
UNION
SELECT VWL.Type, VWL.ID AS CompanyID,VWL.Name,PE.Address as Address
FROM dbo.LeadList_New AS VWL
LEFT OUTER JOIN PersonEmailAddress as PE on VWL.ID=PE.PersonID
WHERE VWL.Type='PERSON'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.