powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Псевдоним для case (V5R3)
11 сообщений из 11, страница 1 из 1
Псевдоним для case (V5R3)
    #34351745
man_555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наткнулся вот на такой подводный камень:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT
       CASE F1  
            WHEN '001' THEN            
                DECIMAL (SUM (AMOUNT) *  0 . 01  *  0 . 4  +  0 . 005 ,  9 ,  2  )
            WHEN '003' THEN
                DECIMAL (SUM (AMOUNT) *  0 . 01  *  1  +  0 . 005 ,  9 ,  2  )
        END CASE [вот тут конструкция AS <имя колонки>  не работает]
FROM
           ....

это как-нибудь можно вылечить?
...
Рейтинг: 0 / 0
Псевдоним для case (V5R3)
    #34352302
Фотография Anton Demidov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
man_555это как-нибудь можно вылечить? Не понял я вашей логики, ну да ладно.

Вы пробовали в круглые скобочки заключить выражение?
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT
       (CASE F1  
              ...
        END CASE) AS <имя колонки>
FROM
           ....
...
Рейтинг: 0 / 0
Псевдоним для case (V5R3)
    #34353908
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В любом случае вот так правильней будет
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT
  SUM(CASE F1  
           WHEN '001' THEN            
               DECIMAL (AMOUNT *  0 . 01  *  0 . 4  +  0 . 005 ,  9 ,  2  )
           WHEN '003' THEN
                   DECIMAL (AMOUNT *  0 . 01  *  1  +  0 . 005 ,  9 ,  2  )
      END CASE) AS <имя колонки>  
FROM
  ...
...
Рейтинг: 0 / 0
Псевдоним для case (V5R3)
    #34353913
А что, выражение CASE должно и начинаться и заканчиваться ключевом словом CASE ???
IMHO, но в ANSI-SQL синтаксис этого выражения не подразумевает наличия ключевого слова CASE после ключевого слова END.
Если верить ANSI-нотации, то второе упоминание CASE воспринимается сервером как алиас на выражение CASE. Поэтому сервер не позволяет присвоить ещё один алиас (ведь алиас на алиас в пределах одного уровня SQL это маразм, неподдерживаемый ни одним SQL-сервером).
...
Рейтинг: 0 / 0
Псевдоним для case (V5R3)
    #34354120
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
man_555Наткнулся вот на такой подводный камень:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT
       CASE F1  
            WHEN '001' THEN            
                DECIMAL (SUM (AMOUNT) *  0 . 01  *  0 . 4  +  0 . 005 ,  9 ,  2  )
            WHEN '003' THEN
                DECIMAL (SUM (AMOUNT) *  0 . 01  *  1  +  0 . 005 ,  9 ,  2  )
        END CASE [вот тут конструкция AS <имя колонки>  не работает]
FROM
           ....

это как-нибудь можно вылечить?CASE после END уберите.
...
Рейтинг: 0 / 0
Псевдоним для case (V5R3)
    #34354162
man_555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinstein man_555Наткнулся вот на такой подводный камень:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT
       CASE F1  
            WHEN '001' THEN            
                DECIMAL (SUM (AMOUNT) *  0 . 01  *  0 . 4  +  0 . 005 ,  9 ,  2  )
            WHEN '003' THEN
                DECIMAL (SUM (AMOUNT) *  0 . 01  *  1  +  0 . 005 ,  9 ,  2  )
        END CASE [вот тут конструкция AS <имя колонки>  не работает]
FROM
           ....

это как-нибудь можно вылечить?CASE после END уберите.

Спасибо!

Действительно надо убрать лишний CASE. Скобки не помогли. Проверил подобную конструкцию на Sybase IQ, интерпретатор ругается и не принимает case после end ни под каким видом:

[Sybase][ODBC Driver][Adaptive Server IQ]Syntax error or access violation: near 'case' in ... end [case],...
Alias под именем CASE на [case ... end] там недопустим.
...
Рейтинг: 0 / 0
Псевдоним для case (V5R3)
    #34354178
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но самое интересное в том, что у них в доке написано, что после END надо ставить CASE! :)
...
Рейтинг: 0 / 0
Псевдоним для case (V5R3)
    #34355847
man_555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinНо самое интересное в том, что у них в доке написано, что после END надо ставить CASE! :)
Даже в примеры закралась та же ошибка

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
               CASE v_workdept
                 WHEN 'A00'
                   THEN UPDATE department SET
                              deptname = 'DATA ACCESS 1';
                 WHEN 'B01'
                   THEN UPDATE department SET
                              deptname = 'DATA ACCESS 2';
                   ELSE UPDATE department SET
                              deptname = 'DATA ACCESS 3';
               END CASE 
...
Рейтинг: 0 / 0
Псевдоним для case (V5R3)
    #34361953
Фотография Anton Demidov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, что END CASE нужен для процедурного кода. В "чистом" SQL CASE не нужен.

Всё сказанное IMHO - проверять лень.
Код: plaintext
1.
--
Per rectum ad astrum
...
Рейтинг: 0 / 0
Псевдоним для case (V5R3)
    #34362198
Бабичев Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton DemidovПохоже, что END CASE нужен для процедурного кода. В "чистом" SQL CASE не нужен.

Всё сказанное IMHO - проверять лень.
Код: plaintext
1.
--
Per rectum ad astrum
Не нужно путать "процедурное" выражение CASE (которое присутствует практически во всех более менее продвинутых алгоритмических языках порграммирования) и выражение CASE, являющееся элементом ANSI-SQL. Это разные вещи. А следовательно и синтаксис у них тоже разный.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Псевдоним для case (V5R3)
    #37298175
Фотография giigro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо! У меня тоже с эти проблема возникла
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Псевдоним для case (V5R3)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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