2

私は次のクエリを持っています:-

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

これは次のような結果になります:-

service          level_3_structure   Total_Reduced
Service 1            Structure1          11.76
Service 2            Structure2         239.86
Service 3            Structure3         940.29

値serviceとlevel_3_structureを含み、「FTE」という列も含む別のテーブル(表2)があります。

私がやりたいのは、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
4

1 に答える 1

5

最初のクエリが必要な行を返す場合は、それを(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 

それでも、table1には列fteが必要なようです。

于 2012-04-16T11:13:41.597 に答える