2013-09-18 7 views
1

У меня есть требование, как мне нужно найти количество вхождений определенного значения в одной строке таблицы оракула.Подсчет числа вхождений элементов в одной строке

Say мой источник таблица выглядит это нравится,

ID score1 score2 score3 score4 score5 
--------------------------------------------- 
aa -1  65  -1  -1  82 
bb -1  65  99  14  82 

Мне нужен запрос, который будет возвращать результаты, как,

ID score1 score2 score3 score4 score5 count (count of -1 occurences) 
------------------------------------------------------ 
aa -1  65  -1  -1  82  3 
bb -1  65  99  14  82  1 

И версия оракула я использую Oracle 10g (поэтому использование вариантов PIVOT исключено) .может ли кто-нибудь помочь мне решить эту проблему.

ответ

2

Вы можете использовать оператор CASE или DECODE.

select table_name.*, 
     case score1 when -1 then 1 else 0 end + 
     case score2 when -1 then 1 else 0 end + 
     case score3 when -1 then 1 else 0 end + 
     case score4 when -1 then 1 else 0 end + 
     case score5 when -1 then 1 else 0 end 
     as score_count 
    from table_name; 

Образец here.

+0

Tons of Thanks Ramblin !! Это отлично работает для меня. Я пытался с DECODE, но команда CASE упростила его. Также большое спасибо за вашу демонстрацию скрипта sql. – Raghavan

Смежные вопросы