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

有多个端口级别判断线段级别问题(SQL)
有5个端口:分别为:T1,T2,T3,T4,T5
  级别分为:一般,重大,紧急;
  优先级:紧急>重大>一般
有下面几种情况:
(1)
T1: 一般,T2: 一般,T3: 一般,T4: 一般,T5: 一般;
这时候线段的级别就为:一般
(2)
T1: 一般,T2: 重大,T3: 一般,T4: 一般,T5: 一般;
这时候线段的级别就为:重大
(3)
T1: 一般,T2: 重大,T3: 一般,T4: 一般,T5: 紧急;
这时候线段的级别就为:紧急
(4)
T1: 一般,T2: 重大,T3: 重大,T4: 一般,T5: 紧急;
这时候线段的级别就为:紧急
(5)
T1: 一般,T2: 重大,T3: 重大,T4: 一般,T5: 重大;
这时候线段的级别就为:重大
提问:就是判断任意一个端口的级别,判断优先级别:
(1)当5个端口中有一个是紧急时,线段级别就为:紧急
(2)当5个端口中有一个是重大时,线段级别就为:重大
(3)当5个端口全为一般时,线段级别就为:一般
求SQL语句,提供思路也可以,谢谢。













------解决方案--------------------
一般为1 5个====>5
重大为5 5个====>25
紧急为25 

求和
5 一般
大于5 小于等于25 为重大
大于25 紧急
------解决方案--------------------
SQL code
select T1,T2,T3,T4,T5,
(case when cn=5 then '一般'
when cn>5 and cn<=25 then '重大'
else '紧急' end) level 
from
(select T1,T2,T3,T4,T5,(decode(T1,'一般',1,'重大',5,25)+
decode(T2,'一般',1,'重大',5,25)+
decode(T3,'一般',1,'重大',5,25)+
decode(T4,'一般',1,'重大',5,25)+
decode(T5,'一般',1,'重大',5,25)) cn
from table_test)