Разбить Select - ом поле на два

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
LeShik
Сообщения: 7
Зарегистрирован: 28 окт 2004, 17:03

Разбить Select - ом поле на два

Сообщение LeShik » 10 дек 2004, 18:45

Ситуация следующая:

Таблица А:
PK : ID_A
.............
B : integer,
..............
C: integer
.............

Необходимо написать Select который будет делать следующее:

Выводить два столбца SUM(B) AS SUMEUR, SUM(B) AS SUMUSD причём суммировать в зависимости от столбца С. Если С = 0 (например), то значение B добавляется в SUMEUR, если С=1, - то в SUMUSD.

Как сделать через ХП, знаю сам. Интересует именно через Select.
Сервер IB 7.0.

Лысый
Сообщения: 177
Зарегистрирован: 08 ноя 2004, 08:20

Сообщение Лысый » 11 дек 2004, 09:28

Не знай как в IB, а в FB:

Код: Выделить всё

SELECT SUM(CASE WHEN A.C = 1 THEN A.B ELSE 0 END) AS SUMEUR,
       SUM(CASE WHEN A.C = 2 THEN A.B ELSE 0 END) AS SUMUSD
  FROM A
P.S. Sag, это я уже освоил :)

Лысый
Сообщения: 177
Зарегистрирован: 08 ноя 2004, 08:20

Сообщение Лысый » 11 дек 2004, 09:54

Однако case не работает в IB...
Я так понял на sql.ru тебе уже ответили.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 11 дек 2004, 18:31

case работает в IB 7.5.

SSY
Сообщения: 11
Зарегистрирован: 27 окт 2004, 14:27

Re: Разбить Select - ом поле на два

Сообщение SSY » 11 дек 2004, 21:19

SUM(B*(-(C-1))) AS SUMEUR, SUM(B*C) AS SUMUSD

LeShik
Сообщения: 7
Зарегистрирован: 28 окт 2004, 17:03

Сообщение LeShik » 13 дек 2004, 10:49

Лысый писал(а):Однако case не работает в IB...
Я так понял на sql.ru тебе уже ответили.
Да, уже ответили, всем спасибо огромное. Если кому интересно как это сделать силами IB 7.0, то вам сюда http://www.sql.ru/forum/actualthread.as ... tid=145175

Ответить