powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Помогите с запросом?
8 сообщений из 8, страница 1 из 1
Помогите с запросом?
    #36411357
Azeke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
В SQL запросе хочу по полю vq.vag_num, где значение начинается на 5 указать признак 1. (поле имеет значение с 10000000 по 99999999)
Делаю так:

Код: plaintext
1.
2.
3.
Select
...
sum(case when (nat_vq.vag_num mod  10000000 ) =  5  then  1  else  0  end) as park,
...

Но ругается запрос [IBM][CLI Driver][DB2/NT] SQL0104N Обнаружен неправильный элемент "mod" после текста "when (nat_vq.vag_num". Список правильных элементов: "CONCAT". SQLSTATE=42601

пробовал так:

Код: plaintext
1.
2.
3.
4.
Select
...
sum(case when (nat_vq.vag_num)  like '5%' then  1  else  0  end) as park,
...
тоже выдает ошибку:
[IBM][CLI Driver][DB2/NT] SQL0440N Не найдено авторизованной подпрограммы "LIKE" типа "FUNCTION" с совместимыми аргументами. SQLSTATE=42884
...
Рейтинг: 0 / 0
Помогите с запросом?
    #36411382
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Azeke,

может что нибудь типа SubStr(str,0,1) = '5'?
...
Рейтинг: 0 / 0
Помогите с запросом?
    #36411472
Azeke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторAzeke,

может что нибудь типа SubStr(str,0,1) = '5'?

Попробовал

Код: plaintext
case when SubStr(nat_vq.vag_num, 0 , 1 ) = '5' then  1  else  0  end

Дал ошибку
[IBM][CLI Driver][DB2/NT] SQL0440N Не найдено авторизованной подпрограммы "SUBSTR" типа "FUNCTION" с совместимыми аргументами. SQLSTATE=42884
...
Рейтинг: 0 / 0
Помогите с запросом?
    #36411600
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Azeke,

я немного поторопился. забыл что индекс строки начинается с 1
т.е. надо писать substr(str,1,1)

но у вас другая ошибка.
В вас vag_num это число? если да то нужно преобразовать в строку.

ну запрос получится типа такого

substr(cast(vq.vag_num as char(8)) ,1,1)
...
Рейтинг: 0 / 0
Помогите с запросом?
    #36411711
Azeke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olzhas
Спасибо теперь работает.
У меня еще вопрос в этом же скрипте у меня есть строка:

Код: plaintext
sum(nat_vq.netto)/Count(nat_vq.vag_num)

когда запускаю запрос на выполнение то пишет ошибку
[IBM][CLI Driver][DB2/NT] SQL0120N Недопустимое использование функции сводки или функции OLAP. SQLSTATE=42903

Я раньше не писал на DB2 запросы, я раньше писал на MS Access и немного MS SQL Server здесь наверно что-то напутал.
...
Рейтинг: 0 / 0
Помогите с запросом?
    #36411895
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Azeke,
вы бы полный запрос привели бы.
...
Рейтинг: 0 / 0
Помогите с запросом?
    #36412238
Azeke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот такой запрос:

Код: 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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
select
       tu3nat.mm_d,
       tu3nat.mm_dor,
       tu3nat.mm_id,
       mmlst_vags.poezd_num,
       tu3nat.nat_id,
       nat_vq.vag_num,
       case when SubStr(cast(nat_vq.vag_num as char( 8 )), 1 , 1 ) = '5' then  1  else  0  end as park,
       sum(nat_vq.netto)/Count(nat_vq.vag_num) as sr_proiz 
from
 (
  select 
         mmlst.mm_d,
         mmlst.mm_dor,
         mmlst.mm_id,
         mmlst.rec_num,
         mmlst.dep_dt,
         max(nat.nat_id) as nat_id
  from mmdoc.mmmslog mmslog
  left join mmdoc.mmmslog mmslogd on
                                     mmslogd.dd_mm_d=mmslog.mm_d
    inner join mmdoc.mmmlst mmlst on
                                   mmlst.mm_id=mmslog.mm_id
   where
         mmlst.prg='1000'
  group by 
           mmlst.mm_d,
           mmlst.mm_dor,
           mmlst.mm_id,
           mmlst.rec_num,
           mmlst.dep_dt
 ) as tu3nat
inner join asoup.poezd_nat_vq nat_vq on
                                        nat_vq.nat_id=tu3nat.nat_id
inner join
 (
  select 
             vags.mm_d,
             vags.mm_dor,
             vags.mm_id,
             vags.poezd_num,
             min(vags.rec_num) as rec_num,
             coalesce(vags.rec_num_next, 300 ) as rec_num_next
  from
   (

    select 
               mmlst1.mm_d,
               mmlst1.mm_dor,
               mmlst1.mm_id,
               mmlst1.poezd_num,
               mmlst1.rec_num,
               min(mmlst2.rec_num) as rec_num_next
    from mmdoc.mmmlst mmlst1
    left join mmdoc.mmmlst mmlst2 on
                 mmlst1.mm_d=mmlst2.mm_d and
                 (
                   mmlst2.wnet is null or mmlst1.wnet<>mmlst2.wnet or
                   mmlst2.wbr is null or mmlst1.wbr<>mmlst2.wbr
                 )
    where
          mmlst1.pr_vq='20'  
    group by
             mmlst1.mm_d,
             mmlst1.mm_dor,
             mmlst1.mm_id,
             mmlst1.poezd_num,		
             mmlst1.rec_num
   ) vags
  group by 
           vags.mm_d,
           vags.mm_dor,
           vags.mm_id,
           vags.poezd_num,
           vags.rec_num_next
 ) mmlst_vags 

on
                 mmlst_vags.mm_d=tu3nat.mm_d
group by
	tu3nat.mm_d,
	tu3nat.mm_dor,
	tu3nat.mm_id,
	mmlst_vags.poezd_num,
	tu3nat.rec_num,
 	tu3nat.nat_id,
	nat_vq.vag_num,
	case when SubStr(cast(nat_vq.vag_num as char( 8 )), 1 , 1 ) = '5' then  1  else  0  end--,
	sum(nat_vq.netto)/Count(nat_vq.vag_num);
...
Рейтинг: 0 / 0
Помогите с запросом?
    #36415131
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Azeke,

зачем вы sum(nat_vq.netto)/Count(nat_vq.vag_num) засунули в секцию group by? Это же элементарная ошибка.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Помогите с запросом?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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