Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL中多级关系文件的返回计数_Sql_Powerbi - Fatal编程技术网

SQL中多级关系文件的返回计数

SQL中多级关系文件的返回计数,sql,powerbi,Sql,Powerbi,有3个表,企业可以有很多客户,他们可以有很多网站 我需要有一个报告,为每个企业列出的客户和网站的总数 SELECT bus.BusinessID, cb.CustomerBusinessID, s.SiteID FROM [dbo].[Business] bus left outer join CustomerBusiness cb on cb.BusinessID = bus.BusinessID left outer join Site s on

有3个表,企业可以有很多客户,他们可以有很多网站

我需要有一个报告,为每个企业列出的客户和网站的总数

    SELECT bus.BusinessID, 
       cb.CustomerBusinessID,
       s.SiteID FROM [dbo].[Business] bus
  left outer join CustomerBusiness cb on cb.BusinessID = bus.BusinessID
  left outer join Site s on cb.CustomerID = s.CustomerID
  Where bus.RecordStatus = 'A'
  and cb.RecordStatus = 'A'
  and s.Sitestatus= 'A'
  Order by Name
我加入了上面看到的文件,我得到了很多行,但我现在不明白如何才能得到一个企业列表及其总数

下面是我的一些数据

所以对于business ID 33,我还没有包括名称,应该有3个客户和10个站点

任何帮助都将不胜感激

这是我在对Kate提供的代码做了一点小小的修改后开始工作的代码

SELECT bus.Name as Business_Name,
       count(distinct tb.TruckerID) AS num_Truckers,  
       count(distinct cb.CustomerBusinessID) AS num_Customers,
       count(distinct s.SiteID) AS num_Sites  -- distinct probably unnecessary
FROM [dbo].[Business] bus
LEFT JOIN  TruckerBusiness tb
     ON tb.BusinessID = bus.BusinessID AND tb.RecordStatus = 'A'
LEFT JOIN  CustomerBusiness cb
     ON cb.BusinessID = bus.BusinessID AND cb.RecordStatus = 'A'
LEFT JOIN  Site s
     ON cb.CustomerID = s.CustomerID AND s.Sitestatus= 'A'
WHERE bus.RecordStatus = 'A'
Group BY bus.Name;

最简单的方法可能是:

选择bus.BusinessID, countdistinct cb.CustomerBusiness ID作为num_业务, countdistinct s.SiteID作为num_站点-distinct可能不必要 从[dbo].[Business]总线左连接 客户业务 在cb.BusinessID=bus.BusinessID和 cb.RecordStatus='A'左连接 站点s 在cb.CustomerID=s.CustomerID和 s、 Sitestatus='A' 其中bus.RecordStatus='A' GROUP BY bus.BusinessID,Name 按名称排序;
注意,我将cb和s上的过滤器移动到on子句。否则,左侧连接将变成内部连接,因此没有客户或没有站点的客户将不会包括在结果中。

这非常有用。我确实需要添加一个GROUPBY子句,而且我还添加了另一个表,我想获取数据。我将用我提出的最终代码编辑我的原始问题。