[英]SQL join on two tables that are not related or have primary keys
I have the following query:-我有以下查询:-
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
Which results in something similar to this:-结果与此类似:-
service level_3_structure Total_Reduced
Service 1 Structure1 11.76
Service 2 Structure2 239.86
Service 3 Structure3 940.29
I have another table (table 2) which contains values service and level_3_structure and also contains a column called 'FTE'.我有另一个表(表 2),其中包含值 service 和 level_3_structure,还包含一个名为“FTE”的列。
What I want to do, is join onto this table based on service and level_3_structure and return a sum of the FTE.我想要做的是根据服务和 level_3_structure 加入这个表并返回 FTE 的总和。
I have tried the below query, but it seems to duplicate table1 for each maching row, resulting in around 8.3 million results.我已经尝试了下面的查询,但它似乎为每个加工行复制了 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
If your first query returns the rows you need, then you could join that (and not table1) to table2:如果您的第一个查询返回您需要的行,那么您可以将它(而不是 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
Still, it sounds like your table1 should have the column fte.不过,听起来您的 table1 应该有列 fte。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.