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

Be Well...
...
Рейтинг: 0 / 0
28.11.2003, 16:16
    #32338009
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования CASE
Код: 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
28.11.2003, 18:09
    #32338163
KiLLun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования CASE
Спасибо DNICO. А реально ты используешь где-нибудь CASE???
...
Рейтинг: 0 / 0
28.11.2003, 18:16
    #32338176
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования CASE
Ага !

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

Код: 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
28.11.2003, 18:38
    #32338190
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования CASE
Извиниясь за ошибку (см. выше) - Должно быть так :
Код: 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
28.11.2003, 20:42
    #32338281
srf2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования CASE
гм.. а это простите какой interbase/firebird?
...
Рейтинг: 0 / 0
29.11.2003, 01:12
    #32338342
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования CASE
>Dnico

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

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

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

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

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

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

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


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