powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / CASE
8 сообщений из 8, страница 1 из 1
CASE
    #36466746
v0ffka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
CASE
    #36466761
yastcher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
там 23 а не 32
...
Рейтинг: 0 / 0
CASE
    #36466768
v0ffka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да какая разница хоть 99 смысл не меняется :))
...
Рейтинг: 0 / 0
CASE
    #36466771
v0ffka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну да ошибся 23 - 32 не в этом дело
...
Рейтинг: 0 / 0
CASE
    #36466841
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v0ffkaКогда выполняю этот запрос тогда поле Result пустое, что я делаю не так?Да в общем-то все "так".
Обычно, я пишу такие выражения в скобках:
Код: plaintext
select (CASE ... END) as SomeName ...
Но не думаю что это так уж принципиально.
А вообще я бы проверил а есть ли там в базе значения '23' и '52', может они на самом деле '23 ' и '52 '?
И еще будет полезно значение для ELSE добавить.
...
Рейтинг: 0 / 0
CASE
    #36466917
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v0ffkaну да ошибся 23 - 32 не в этом дело
Сделайте сначало нечто
select count(*), TRTRTY from tb group by TRTRTY и посмотрите, если там вообще заданные вами значения...
...
Рейтинг: 0 / 0
CASE
    #36467506
v0ffka,

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

Код: 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
8 сообщений из 8, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / CASE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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