我有以下查询: -
select
dbo.table1.service,
dbo.table1.level_3_structure,
Sum(table1.Reduced) as Total_Reduced
from dbo.table1
where
dbo.table1.Period = 'Cumulative'
Group by
dbo.table1.service,
dbo.table1.level_3_structure
Run Code Online (Sandbox Code Playgroud)
结果与此类似: -
service level_3_structure Total_Reduced
Service 1 Structure1 11.76
Service 2 Structure2 239.86
Service 3 Structure3 940.29
Run Code Online (Sandbox Code Playgroud)
我有另一个表(表2),其中包含值service和level_3_structure,还包含一个名为'FTE'的列.
我想要做的是,基于service和level_3_structure加入此表并返回FTE的总和.
我已经尝试了下面的查询,但它似乎为每个加工行复制table1,导致大约830万个结果.
select
dbo.table1.service,
dbo.table1.level_3_structure,
Sum(dbo.table1.Reduced) as Total_Reduced,
Sum(dbo.table2.fte) as 'Total FTE'
from dbo.table1
left join dbo.table2
on dbo.table1.service = dbo.table2.service and
dbo.table1.level_3_structure = dbo.table2.level_3_structure
where
dbo.table1.Period = 'Cumulative'
Group by
dbo.table1.service,
dbo.table1.level_3_structure
Run Code Online (Sandbox Code Playgroud)
如果您的第一个查询返回您需要的行,那么您可以将它(而不是table1)连接到table2:
select service, level_3_structure, Total_Reduced, sum(fte) as Total_FTE
from (
select
dbo.table1.service,
dbo.table1.level_3_structure,
Sum(table1.Reduced) as Total_Reduced
from dbo.table1
where
dbo.table1.Period = 'Cumulative'
Group by
dbo.table1.service,
dbo.table1.level_3_structure
) t1
inner join table2 on t1.service = table2.service
AND t1.level_3_structure = table2.level_3_structure
Group by
dbo.table1.service,
dbo.table1.level_3_structure
Run Code Online (Sandbox Code Playgroud)
不过,听起来你的table1应该有列fte.