Tsql 无法使视图在SQL Server上工作

Tsql 无法使视图在SQL Server上工作,tsql,sql-server-2008-r2,Tsql,Sql Server 2008 R2,我正在尝试创建一个包含多个表中的列的视图 这就是它看起来的样子: 这是我的问题: SELECT Billing.WebPortalBilling.WebPortalBillingId, Billing.WebPortalBilling.CorporationId, Billing.WebPortalBilling.TokenId, Billing.WebPortalBilling.GatewaySupportFee, Billing.WebPor

我正在尝试创建一个包含多个表中的列的视图

这就是它看起来的样子:

这是我的问题:

SELECT     
   Billing.WebPortalBilling.WebPortalBillingId, 
   Billing.WebPortalBilling.CorporationId, 
   Billing.WebPortalBilling.TokenId, 
   Billing.WebPortalBilling.GatewaySupportFee, 
   Billing.WebPortalBilling.GatewayPerTransactionFee, 
   Billing.WebPortalBilling.PortalPerCustomerFee, 
   Billing.WebPortalBilling.PortalSupportFee, 
   Customer.Account.AccountNumber, 
   Billing.WebPortalBilling.IsActive, 
   Customer.Customer.Name, 
   Customer.Customer.TaxCode, 
   Company.CorporationStructure.Branch
FROM         
   Company.CorporationStructure 
RIGHT OUTER JOIN
   Customer.Account ON Company.CorporationStructure.CorporationStructureId = Customer.Account.CorporationStructureId 
RIGHT OUTER JOIN
   Customer.Customer ON Company.CorporationStructure.Branch = Customer.Customer.Branch 
RIGHT OUTER JOIN
   Billing.WebPortalBilling ON Customer.Account.CorporationId = Billing.WebPortalBilling.CorporationId
WHERE     
   (Billing.WebPortalBilling.IsActive = 1)
它只返回1条记录,这是不正确的。我试图将客户的姓名与WebPortalBilling表以及其他两个表中的帐号和branth联系起来

我是sql新手,所以要友善


谢谢

试试这个,我觉得左连接更清晰

SELECT    
  B.WebPortalBillingId, 
  B.CorporationId,   
  B.TokenId, 
  B.GatewaySupportFee, 
  B.GatewayPerTransactionFee, 
  B.PortalPerCustomerFee, 
  B.PortalSupportFee, 
  C.AccountNumber, 
  B.IsActive, 
  C.Name,
  C.TaxCode, 
  CS.Branch
FROM  Customer.Customer C
  LEFT JOIN  Company.CorporationStructure CS ON CS.Branch = C.Branch 
  LEFT JOIN  Customer.Account A ON CS.CorporationStructureId = A.CorporationStructureId
  LEFT JOIN  Billing.WebPortalBilling B ON A.CorporationId = B.CorporationId
WHERE B.IsActive = 1

如评论所述,何处正在杀死外部
试一试


是webportalbilling上的左或右连接,但需要webportalbilling列中的特定值,然后它本质上使其成为内部连接。拿出where,看看你能得到什么。或者包含null作为选项。明白了。。。我现在明白了!
SELECT     
   Billing.WebPortalBilling.WebPortalBillingId, 
   Billing.WebPortalBilling.CorporationId, 
   Billing.WebPortalBilling.TokenId, 
   Billing.WebPortalBilling.GatewaySupportFee, 
   Billing.WebPortalBilling.GatewayPerTransactionFee, 
   Billing.WebPortalBilling.PortalPerCustomerFee, 
   Billing.WebPortalBilling.PortalSupportFee, 
   Customer.Account.AccountNumber, 
   Billing.WebPortalBilling.IsActive, 
   Customer.Customer.Name, 
   Customer.Customer.TaxCode, 
   Company.CorporationStructure.Branch
FROM         
   Company.CorporationStructure 
RIGHT OUTER JOIN
   Customer.Account ON Company.CorporationStructure.CorporationStructureId = Customer.Account.CorporationStructureId 
RIGHT OUTER JOIN
   Customer.Customer ON Company.CorporationStructure.Branch = Customer.Customer.Branch 
RIGHT OUTER JOIN  Billing.WebPortalBilling 
    ON Customer.Account.CorporationId = Billing.WebPortalBilling.CorporationId
   AND Billing.WebPortalBilling.IsActive = 1