日期:2014-05-16  浏览次数:21030 次

由两端端口级别判断线段级别问题(SQL)
有10个端口:分别为:G9/1,G9/2,G9/3,G9/4,G9/5;T1,T2,T3,T4,T5;
10个端口都有级别:G9/1:重大,G9/2:紧急,G9/3:一般,G9/4:重大,G9/5:紧急
  T1:重大,T2:重大,T3:一般,T4:一般,T5:一般
  优先级程度: 紧急>重大>一般
端口与端口由线段相连:
G9/1(重大)----------T1(重大)
  重大
G9/2(紧急)----------T2(重大)
  紧急
G9/3(一般)----------T3(一般)
  一般
G9/4(重大)----------T4(一般)
  重大
G9/5(紧急)----------T4(一般)
  紧急
就是由两端的端口级别判断线段的级别。两端端口谁的级别高线段就是那个级别高的级别。
希望写sql语句来判断,请求大神。
如果有需要:下面为原始数据:
序号 id 时间 资产编号 资产名称 设备类型 端口号 级别
100085 ALARM_001_100003 2011-12-31 19:50:17:000000 8523342358 EMC CX480 存储设备 G9/1 重大
100086 ALARM_001_100003 2011-12-31 19:50:17:000000 8523342358 EMC CX480 存储设备 G9/2 紧急
100087 ALARM_001_100003 2011-12-31 19:50:17:000000 8523342358 EMC CX480 存储设备 G9/3 一般
100088 ALARM_001_100003 2011-12-31 19:50:17:000000 8523342358 EMC CX480 存储设备 G9/4 重大
100089 ALARM_001_100003 2011-12-31 19:50:17:000000 8523342358 EMC CX480 存储设备 G9/5 紧急
100090 ALARM_001_100004 2011-12-31 19:50:17:000001 8523342358 EMC CX481 存储设备 G9/6 紧急
100091 ALARM_001_100003 2011-12-31 19:50:17:000000 8523342359 EMC CX481 存储设备 T1 重大
100092 ALARM_001_100003 2011-12-31 19:50:17:000000 8523342359 EMC CX481 存储设备 T2 重大
100093 ALARM_001_100003 2011-12-31 19:50:17:000000 8523342359 EMC CX481 存储设备 T3 一般
100094 ALARM_001_100003 2011-12-31 19:50:17:000000 8523342359 EMC CX481 存储设备 T4 一般
100095 ALARM_001_100003 2011-12-31 19:50:17:000000 8523342359 EMC CX481 存储设备 T5 一般
100096 ALARM_001_100004 2011-12-31 19:50:17:000001 8523342359 EMC CX482 存储设备 T6 紧急




------解决方案--------------------
紧急>重大>一般 decode( 级别, '一般',1,重大,3,9)
9 3 1
2端口连接
1+1=2 ====>一般
1+3=4 ====>重大
1+9=10 ====>紧急
3+3=6 ====>重大
3+9=12 ====>紧急
9+9=18 ====>紧急
case when 1+1=2 then 一般 
when 1+3=4 or 3+3=6 then 重大
else 紧急 end

SQL code
select a.id,b.id,(case when (a.le+b.le)=2 then '一般'
when (a.le+b.le)=4 or (a.le+b.le)=6 then '重大'
else '紧急' end ) s from(select id ,decode( 级别, '一般',1,重大,3,9) le from table)a,
(select id ,decode( 级别, '一般',1,重大,3,9) le from table) b