2016-07-31 29 views
0

我不是一个说到子查询的人。我试图让下面的SQL脚本给出正确的结果,并且我做错了什么,或者我误解了结果。这是我的SQL。寻找SQL来做一个子查询的总和

select Horizontal Horizontal, sum(headcount) Headcount, 
    sum(fte) FTE, BE, Street, City, State, Zip, Country, 
    SQ_FT, O_L, Comp_Code, Entity 
FROM 
    (SELECT t.Horizontal Horizontal, 
     COUNT(d.SIGNEDAU) Headcount, 
     COUNT(d.SIGNEDAU) * t.[AU Distribution to Services] FTE, 
     a.[BE #] BE, d.ADDRESSLINE1 Street, d.CITY, 
     d.STATE, d.ZIP, d.COUNTRY, 
     a.FT2 SQ_FT, a.[O/L] O_L, a.[Comp Code], a.ENTITY 
    FROM dbo.HR_Data d 
     join dbo.Service_Taxonomy t 
      ON d.SIGNEDAU = t.[AU Code] 
     left join dbo.All_Active a 
      ON d.CITY = a.City 
       AND d.STATE = a.ST 
       AND d.ADDRESSLINE1 = a.Street 
    GROUP BY d.SIGNEDAU, t.[AU Distribution to Services], 
     a.[BE #], a.FT2, a.[O/L], a.[Comp Code], 
     a.ENTITY, t.[Critical Y/N], t.Horizontal, t.[Level 1], 
     d.ADDRESSLINE1, d.CITY, d.STATE, d.COUNTRY, d.ZIP, 
     d.HR_STATUS, d.EMPLOYEESTATUS 
    HAVING d.HR_STATUS = N'A' and d.EMPLOYEESTATUS = N'A') sub 
Group by Horizontal, FTE, BE, Street, 
    City, State, Zip, Country, SQ_FT, 
    O_L, Comp_Code, Entity 

enter image description here

我希望员工人数和FTE的总和,与本集团通过,这两个行合并成一个,并产生总人数共10和FTE共有5。有些原因,我不完全明白,上面的SQL似乎不是总结而是分组。有人能帮我理清这个吗?我必须错过简单的东西,但我不知道是什么。提前致谢!

+0

您粘贴您的查询的输出的屏幕截图,但它并没有显示超出国家列。你能否提供更好的屏幕截图,其中还包括SQ_FT,O_L,Comp_Code,Entity?这些列中的行可能不同。 –

+0

我会提到的有关子查询的一件事(除非它们是相关的,而不是你的),那就是将每个子查询看作它自己的不同表格。换句话说,一旦你写了一个子查询,忘记了它的所有实现细节,并将其视为它自己独特的关系。然后,针对子查询执行聚合就像其他任何操作一样。如果你的子查询没有提供正确的“起始材料”,重写它直到它。然后,再次忘记它的实现,并编写外部聚合。 – Xedni

+1

如果你可以发布一些样本数据和预期结果,我们将更容易帮助你 – Squirrel

回答

1

排除FTEGROUP BYSELECT