Tsql 当联接列具有多个值时忽略列

Tsql 当联接列具有多个值时忽略列,tsql,join,count,Tsql,Join,Count,我有一个表Orgs,其中包含以下数据: ID Name AddressID 0 McDonalds 4 1 Starbucks 5 2 Burger King 7 ID OrgID Address 3 0 123 Main St. 4 0 456 East Ave. 5 1 789 Young St. 6 2 5 Rive

我有一个表Orgs,其中包含以下数据:

ID   Name            AddressID
0    McDonalds          4
1    Starbucks          5
2    Burger King        7
ID   OrgID   Address
3     0      123 Main St.
4     0      456 East Ave.
5     1      789 Young St.
6     2      5 Riverside Dr.
7     2      8 Lakeview Ave.
我还有一个表Addresses,其中包含以下数据:

ID   Name            AddressID
0    McDonalds          4
1    Starbucks          5
2    Burger King        7
ID   OrgID   Address
3     0      123 Main St.
4     0      456 East Ave.
5     1      789 Young St.
6     2      5 Riverside Dr.
7     2      8 Lakeview Ave.
我需要创建一个select语句,从Orgs表中选择公司名称及其地址。组织表中的公司可以有一个或多个地址。如果该公司只有一个地址,我不想返回该公司的任何地址。如果公司有多个地址,我想返回Orgs.AddressID=Addresses.ID的地址

所以我的结果应该是这样的:

ID   Name         Address
0    McDonalds    456 East Ave.
1    Starbucks
2    Burger King  8 Lakeview Ave.

我不知道该怎么做。谢谢你的帮助

没有数据本身很难,但是像这样的东西

SELECT 
    O.ID, O.Name, A.Address
FROM 
    Orgs O
LEFT OUTER JOIN 
    (SELECT OrgID FROM Addresses GROUP BY OrgID HAVING COUNT(*) > 1) X ON O.ID = X.OrgID
LEFT OUTER JOIN 
    Addresses A ON X.OrgID = A.OrgID AND O.AddressID = A.ID
SELECT 
    orgs.OrgID
,   orgs.Name
,   CASE 
        WHEN OrgCount > 1 THEN ad.Address
        ELSE '' 
    END AS Address
FROM        
(
    SELECT 
        OrgID
    ,   Name
    ,   COUNT(*) AS OrgCount
    FROM 
    Orgs
) orgs
INNER JOIN 
Addresses ad
    ON 
    ad.AddressID = orgs.AddressID 
GROUP BY 
    orgs.OrgID
,   orgs.Name
,   CASE 
        WHEN OrgCount > 1 THEN ad.Address
        ELSE '' 
    END AS Address


我的标题应该是“当连接的列只有一个值时忽略列”。不确定是否可以更新我的标题。我想修复你的代码。您在O.Name后省略了逗号,但Stackoverflow不允许少于6个字符的更改。你能换一下吗?万分感谢@AndroidDev,当我试图在其他好的代码中修复1个字符的打字错误时,我遇到了这个问题!与DJ完全相同的解。但愿我能给你们两个打勾。再次感谢!