Возможно ли иметь несколько операторов CASE в одном операторе выбора sqlplus?

Ранее я задавал вопрос о форматировании вывода sqlplus в HTML с использованием оператора CASE.

Меня попросили изменить отчет, чтобы включить новый столбец, который у меня есть легко, но я хотел бы «CASE» вывести этот столбец, чтобы он был закодирован цветом в html.

select upper(lpad(country,6,' ')) cntry, max(timestamp) Timestamp,substr(LPAD(test_type,10,' '),0,10) Type,
CASE
        WHEN ((sysdate-max(timestamp))*1440) >=60 THEN '<span class="threshold-critical">'|| ' <======= ERROR over 60 minutes since last run'||'</span>'
        WHEN ((sysdate-max(timestamp))*1440) >=30 THEN '<span class="threshold-warning">'|| '<===== WARNING over 30 minutes since last run'||'</span>'
    ELSE '<span class="threshold-ok">'|| '<===== GOOD_____' ||'</span>'
    end status,
CASE
   WHEN (ROUND(AVG((NVL(s2_time,0)+NVL(s3_time,0)+NVL(s4_time,0)+NVL(s5_time,0)+NVL(s6_time,0)+NVL(s7_time,0)+NVL(s8_time,0)+NVL(s9_time,0)+NVL(s10_time,0))/1000),1)) >=60 THEN '<span class="average-critical"</span>'
   WHEN (ROUND(AVG((NVL(s2_time,0)+NVL(s3_time,0)+NVL(s4_time,0)+NVL(s5_time,0)+NVL(s6_time,0)+NVL(s7_time,0)+NVL(s8_time,0)+NVL(s9_time,0)+NVL(s10_time,0))/1000),1)) >=35 THEN '<span class="average-warning"</span>'
   ELSE '<span class="average-ok"</span>'
END Average
from rfgdba.perf_test_results ptr, rfgdba.perf_tests pt
where country is not null and test_id in ((select id from rfgdba.perf_tests where live='Y')) and test_type in ('ORACLE','SIEBEL') 
and timestamp > sysdate-(59/1440) and ptr.test_id=pt.ID
group by country, test_type
order by country, TRUNC(timestamp, 'HH24')

есть идеи, почему это не работает?

пример вывода, который странно показывает, что он работает из sqlplus

вывод sqlplus для CASE в операторе select


person nyehus    schedule 06.10.2015    source источник
comment
Не работает? Какую ошибку вы получаете?   -  person Ollie    schedule 06.10.2015
comment
не следует ли rem new CASE statement added below комментировать?   -  person Utsav    schedule 06.10.2015
comment
Да, вы, безусловно, можете использовать более одного выражения CASE в SELECT. Что вы имеете в виду под не работает? Было бы полезно, если бы вы создали SQLFiddle, заполненный таблицами и данными, чтобы люди могли помогите разобраться в чем дело. Спасибо.   -  person Bob Jarvis - Reinstate Monica    schedule 06.10.2015
comment
@nyehus: Пожалуйста, опубликуйте точное сообщение об исключении в своем вопросе.   -  person Gaurav Soni    schedule 06.10.2015
comment
строку «rem new CASE», которую я только что ввел, чтобы показать новую строку, что касается ошибки - я ничего не получаю - ну, не то, чтобы я мог найти   -  person nyehus    schedule 06.10.2015
comment
Но это выглядит частью вашего кода. Дайте точный запрос SQL, какую ошибку вы получаете, некоторые примеры данных в таблицах и ожидаемый результат на основе этого. Пример SQLFiddle был бы лучше.   -  person Utsav    schedule 06.10.2015
comment
Итак, запрос не возвращает никаких записей?   -  person Ollie    schedule 06.10.2015
comment
строка комментария удалена из моего кода   -  person nyehus    schedule 06.10.2015
comment
Я только что извлек код sql из своего скрипта и запустил его в жабе - и он возвращает вывод - см. загруженное изображение - так что, похоже, проблема связана с моей копией файла set_markup, который создает вывод в формате html   -  person nyehus    schedule 06.10.2015


Ответы (1)


это должно работать, простой пример:

-- some test data
with data as
 (select 1 as id, 'A' as val
    from dual
  union
  select 2, 'B' from dual)
select case
         when id = 1 then
          '1'
         else
          'not 1'
       end as col1,
       case
         when val = 'B' then
          'B'
         else
          'not B'
       end as col2
  from data

см. http://www.sqlfiddle.com/#!4/9eecb7d/7785

person Frank Ockenfuss    schedule 06.10.2015
comment
большое спасибо - оказалось, что это синтаксические ошибки, так как код sql успешно работал в toad, но не в моем сценарии Windows, плюс также была ошибка в моем конфигурационном файле set_markup - теперь все работает как положено - person nyehus; 06.10.2015