powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Пример использования CASE
8 сообщений из 8, страница 1 из 1
Пример использования CASE
    #32337952
Фотография KiLLun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приведите пожалуйста запросы-примеры на использование CASE (лучше целые ХП, если кто использует)

Be Well...
...
Рейтинг: 0 / 0
Пример использования CASE
    #32338009
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
A) (simple)

SELECT
    o.ID,
    o.Description,

    CASE o.Status
      WHEN  1  THEN 'confirmed'
      WHEN  2  THEN 'in production'
      WHEN  3  THEN 'ready'
      WHEN  4  THEN 'shipped'
      ELSE 'unknown status ''' || o.Status || ''''
    END

  FROM
    Orders o

B) (searched)

  SELECT
    o.ID,
    o.Description,

    CASE
      WHEN (o.Status IS NULL) THEN 'new'
      WHEN (o.Status =  1 ) THEN 'confirmed'
      WHEN (o.Status =  3 ) THEN 'in production'
      WHEN (o.Status =  4 ) THEN 'ready'
      WHEN (o.Status =  5 ) THEN 'shipped'
      ELSE 'unknown status ''' || o.Status || ''''
    END

  FROM
    Orders o


Best regards,
Dnico.
...
Рейтинг: 0 / 0
Пример использования CASE
    #32338163
Фотография KiLLun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо DNICO. А реально ты используешь где-нибудь CASE???
...
Рейтинг: 0 / 0
Пример использования CASE
    #32338176
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага !

Например надо посчитать сколько денег в кассе:

Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT
           CASE o.TypeDoc 
                    WHEN  1  THEN SUM(AMOUNT) // Приход
                    WHEN  2  THEN SUM(-AMOUNT)  // Расход
           END
  FROM DOCUMENT o


Очень полезная функция
Best regards,
Dnico.
...
Рейтинг: 0 / 0
Пример использования CASE
    #32338190
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиниясь за ошибку (см. выше) - Должно быть так :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT
   SUM(
           CASE o.TypeDoc 
                    WHEN  1  THEN AMOUNT    // Приход
                    WHEN  2  THEN -AMOUNT   // Расход
           END
          )
  FROM DOCUMENT o


Best regards,
Dnico.
...
Рейтинг: 0 / 0
Пример использования CASE
    #32338281
srf2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гм.. а это простите какой interbase/firebird?
...
Рейтинг: 0 / 0
Пример использования CASE
    #32338342
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Dnico

Функция м.б. и полезная, только как же без неё раньше то обходились ? :)
Лично я считаю, что введение таких "приятностей" не только упрощает написание кода, но и приводит к ослаблению мозговой деятельности :)

А твой запрос (без всяких CASE) выглядит так :

Код: plaintext
SELECT SUM(AMOUNT*( 3 - 2 *TypeDoc)) FROM FROM DOCUMENT
...
Рейтинг: 0 / 0
Пример использования CASE
    #32338495
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Johnmen
Johnmen писал:А твой запрос (без всяких CASE) выглядит так :

SELECT SUM(AMOUNT*(3-2*TypeDoc)) FROM FROM DOCUMENT

Оно может и так ... но TypeDoc не ограничивается значениями 1,2 и тем более
вообще денежными документами. Там может быть все что угодно!

Ну а если про то, как обходились раньше : Я писал ХП !

srf2000
Это я про FB 1.5
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Пример использования CASE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]