Операция выбора case

  • Часть 1
  • | 2
  • | 3

(' Номер л/с абонента '|| AccountCD) AS Ab_Info, (' Код неисправности   '|| FailureCD) AS Failure, CASE Executed

WHEN 0 THEN 'Заявка не погашена' ELSE 'Погашена' END FROM Request WHERE AccountCD='115705';. Результат выполнения запроса представлен на рис. 3.41.

REQUESTCD

AB INFO

2

Номер л/с абонента 115705

15

Номер л/с абонента 115705

16

Номер л/с абонента 115705

17

Номер л/с абонента 115705

18

Номер л/с абонента 115705

FAILURE

Код неисправности  1

Код неисправности  5

Код неисправности  3 Код неисправности  5

Код неисправности  3

CASE

Погашена

Погашена

Заявка не погашена Погашена

Погашена

Рис. 3.41. Результат выполнения запроса с простой операцией CASE

Пусть необходимо вывести информацию об оплатах со значением от 50 до 100 с указанием срока давности оплаты: если оплата была произведена до 1999 года, то вывести 'Давно', если оплата была произведена в 1999 или 2000 годах, то вывести 'Не очень давно', если позднее - 'Недавно'. Запрос с использованием операции CASE с поиском будет выглядеть следующим образом: SELECT PayFactCD, AccountCD, PaySum,

(CASE WHEN PayDate < '01.01.1999' THEN 'Давно' WHEN PayDate

BETWEEN '01.01.1999' AND '31.12.2000' THEN 'Не очень давно' ELSE 'Недавно' END) AS Oplata FROM PaySumma

WHERE PaySum BETWEEN 50 AND 100;. Результат выполнения запроса представлен на рис. 3.42.

PAYFACTCD

ACCOUNTCD

PAYSUM

OPLATA

1

005488

58,70

Недавно

3

005488

56,00

Не очень давно

7

136160

56,00

Не очень давно

9

080047

80,00

Давно

10

080047

80,00

Недавно

12

080613

56,00

Недавно

14

115705

58,70

Недавно

15

136169

58,70

Недавно

16

443069

80,00

Недавно

27

080270

57,10

Давно

29

005488

62,13

Не очень давно

37

080270

58,10

Недавно

42

080270

60,10

Недавно

Рис. 3.42. Результат выполнения запроса с операцией CASE с поиском

предыдущаяследующая