2014-02-10 68 views
2

我们必须找到每个风险类别影响程度计算如图最后的结果部件数量如何找到两个连接表

风险表

RiskID RiskName 
---------------------- 

1 Risk1 
2 Risk2 
3 Risk3 
4 Risk4 
5 Risk5 
6 Risk6 
7 Risk7 
8 Risk8 
9 Risk9 
10 Risk10 
11 Risk11 

分类表

Cat_ID Cat_Name 
-------------------------- 

1 Design 
2 Operation 
3 Technical 

Risk_Category表

Risk_ID  Category_ID 
------------------------ 

1  1 
1  2 
2  1 
3  1 
3  3 
4  1 
5  2 
6  1 
7  3 
8  1 
9  3 
10  3 

Risk_Impact_Assessment表

Risk_ID  Impact_Level Impact_Score 
--------------------------------------------- 

1  High  20 
2  Medium  15 
3  High  20 
4  Low  10 
5  High  20 
6  High  20 
7  High  20 
8  Low  10 
9  Medium  15 
10  Low  15 
11  Medium  15 

结果应该是这样的

Cat_Name Impact_Level_High Impact_Level_Medium Impact_Level_Low 
------------------------------------------------------------------------------------- 

Design   1   1   2        
Operation  2             
Technical  2    2   1   

回答

1

你可能想使用group by条款,与case一起,例如:

select 
Cat_Name, 
sum(case when Impact_Level = 'High' then 1 else 0 end) as [Impact_Level_High], 
sum(case when Impact_Level = 'Medium' then 1 else 0 end) as [Impact_Level_Medium], 
sum(case when Impact_Level = 'Low' then 1 else 0 end) as [Impact_Level_Low] 
from [Risk_Impact_Assessment] 
... 
group by Cat_Name; 

(我离开了所有的连接,我认为你可以写这些没问题)

你可以用这个技巧来完成很多很酷的事情,包括参数排序和(就像这里)复杂的聚合函数,而且工作量很少。

+0

感谢Luaan为您提示帮助 –

+0

@ user3271821很高兴我能帮忙:) – Luaan