Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / CASE / 8 сообщений из 8, страница 1 из 1
12.02.2010, 18:10
    #36466746
v0ffka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE
Need help!! Sybase IQ 12.5
Есть столбец TRTRTY (идиотское название, сам знаю :)) но не я его создавал). Так вот. в этом поле есть значения 52, 32. Мне необходимо выполнить следующий запрос: если значения в этом поле 52, тогда неободимо выполнить сложение двух значений из столбцов этой же таблицы, если же 32 тогда аналогичное сложение, только других.

Код: plaintext
1.
2.
3.
4.
5.
6.
select (ряд столбцов...) 
        CASE tb.TRTRTY 
             WHEN '23'  THEN tb.data1 + tb.data2 (значения типа double)
             WHEN '52'  THEN tb.data3 + tb.data4 (значения типа double)
        END AS Result
from tableName tb

Когда выполняю этот запрос тогда поле Result пустое, что я делаю не так?
...
Рейтинг: 0 / 0
12.02.2010, 18:19
    #36466761
yastcher
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE
там 23 а не 32
...
Рейтинг: 0 / 0
12.02.2010, 18:25
    #36466768
v0ffka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE
Да какая разница хоть 99 смысл не меняется :))
...
Рейтинг: 0 / 0
12.02.2010, 18:26
    #36466771
v0ffka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE
ну да ошибся 23 - 32 не в этом дело
...
Рейтинг: 0 / 0
12.02.2010, 18:59
    #36466841
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE
v0ffkaКогда выполняю этот запрос тогда поле Result пустое, что я делаю не так?Да в общем-то все "так".
Обычно, я пишу такие выражения в скобках:
Код: plaintext
select (CASE ... END) as SomeName ...
Но не думаю что это так уж принципиально.
А вообще я бы проверил а есть ли там в базе значения '23' и '52', может они на самом деле '23 ' и '52 '?
И еще будет полезно значение для ELSE добавить.
...
Рейтинг: 0 / 0
12.02.2010, 20:06
    #36466917
Sergey Orlov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE
v0ffkaну да ошибся 23 - 32 не в этом дело
Сделайте сначало нечто
select count(*), TRTRTY from tb group by TRTRTY и посмотрите, если там вообще заданные вами значения...
...
Рейтинг: 0 / 0
13.02.2010, 14:17
    #36467506
CASE
v0ffka,

1. Проверить тип поля TRTRTY
2. Провериь на наличие значений NULL
...
Рейтинг: 0 / 0
13.02.2010, 16:26
    #36467640
Mikle83
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE
попробуйте как-то так:

Код: plaintext
1.
2.
3.
4.
5.
6.
select (ряд столбцов...) 
        CASE tb.TRTRTY 
             WHEN '23'  THEN IsNull(tb.data1, 0 ) + IsNull(tb.data2, 0 ) (значения типа double)
             WHEN '52'  THEN IsNull(tb.data3, 0 ) + IsNull(tb.data4, 0 ) (значения типа double)
             else  0 
        END AS Result
from tableName tb
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / CASE / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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