powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Informix [игнор отключен] [закрыт для гостей] / Помогите с выборкой из базы.
25 сообщений из 41, страница 1 из 2
Помогите с выборкой из базы.
    #35781700
Khod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть 5 SQL-запросов, выводимых результаты:

SQL1: Select cod1, sum1;
SQL2: Select cod2, sum2;
SQL3: Select cod3, sum3;
SQL4: Select cod4, sum4;
SQL5: Select cod5, sum5.

cod1 - cod5 может принимать значения от 1101 до 1121.
Но поля могут быть и пустыми. А то и выполнение запроса может дать 0 строк.

Помогите составить запрос, выводящий таблицу вида:

cod, sum1, sum2, sum3, sum4, sum5.
1101
....
1121

Это нужно для работы, а не для баловства.
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #35781760
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понятно.
В смысле есть таблица
работник месяц суммавася янв 10вася фев 10вася март 10петя янв 10петя фев 10

надо получить
работник янв февр мартвася 10 10 10петя 10 10 0
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #35781812
Khod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типа:

SQL1:
domain (count)

1101 61
1102 18
1103 24
1104 12
1105 45
1106 278
1107 61
1108 134
1109 33
1110 39
1111 2
1112 13
1113 7
1114 28
1115 28
1116 7
1117 17
1118 19
1119 28
1120 9
1121 8

SQL2:
domain (count)

1101 24
1102 16
1104 17
1105 31
1106 36
1107 7
1108 11
1109 8
1110 25
1111 20
1112 16
1113 8
1114 18
1115 18
1116 11
1117 10
1118 17
1120 8


SQL3:
domain (count)

1101 1
1102 1
1103 5
1104 7
1105 1
1106 34
1107 11
1108 3
1112 4
1114 1
1118 1
1119 2
1120 3
1121 3

SQL4:
domain (count)

SQL5:
domain (count)

Надо:
domain (count1) (count2) (count3) (count4) (count5)

1101 61 24 1 0 0
1102 18 16 1 0 0
1103 24 0 5 0 0
1104 12 17 7 0 0
1105 45 31 1 0 0
1106 278 36 34 0 0
1107 61 7 11 0 0
1108 134 11 3 0 0
1109 33 8 0 0 0
1110 39 25 0 0 0
1111 2 20 0 0 0
1112 13 16 4 0 0
1113 7 8 0 0 0
1114 28 18 1 0 0
1115 28 18 0 0 0
1116 7 11 0 0 0
1117 17 10 0 0 0
1118 19 17 1 0 0
1119 28 0 2 0 0
1120 9 8 3 0 0
1121 8 0 3 0 0
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #35781841
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
версия информикса какая? 1101- 1121 жестко заданы?
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #35781850
Khod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денисверсия информикса какая? 1101- 1121 жестко заданы?

Информикс 9.30.
1101-1121 заданы жёстко.
Но, в зависимости от выборки, могут быть пустые строки, как отработка 4 и 5 запроса.
И могут быть пустые строки во всех таблицах.
А надо получить полноценную таблицу, где вместо отсутствующих полей будут 0
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #35781861
ak-47
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Выбрать 1101 - 1121 от туда где они точно есть всегда.
2. left join для пяти запросов с данными
3. nvl(value, 0) для преобразования null в 0
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #35781869
ak-47
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще описывай структуру данных и показывай какие запросы делаешь.
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #35781919
Khod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запросы, в результате которых, появляются числовые поля: код и счётчик.
Если я сделаю запрос SQL0, который выведет поле с номером домена, как мне двигаться дальше?

То есть результат выполнения SQL0^

domain:
1101
...
1121
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #35781953
informixxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор1. Выбрать 1101 - 1121 от туда где они точно есть всегда...
или временные таблитц еще есть
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Помогите с выборкой из базы.
    #36796185
Khod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица Т1(дата1, дата2).
Нужно выбрать такие значения, когда дата2 больше дата1 на 2 месяца.
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #36796201
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KhodЕсть таблица Т1(дата1, дата2).
Нужно выбрать такие значения, когда дата2 больше дата1 на 2 месяца.
select *
from Т1
where дата2 > дата1 +2 UNITS month
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #36797174
Khod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select *
from Т1
where дата2 > дата1 +55 UNITS year

Выдаёт ошибку -1267 The result of a datetime computation is out of range.
Дело в том, что 29 февраля высокосного года переходит в 29 февраля невысокосного года и возникает ошибка.

Как изменить запрос, чтобы ошибка исчезла?
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #36797432
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #36803192
Khod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Информикс 9.30
Делаю:
select *
from Т1
where ADD_MONTHS(дата1, 1) >= дата2)

Пишет 674 Routine ADD_MONTHS cannot be resolved.
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #36803379
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KhodИнформикс 9.30
...
Пишет 674 Routine ADD_MONTHS cannot be resolved.
В этой версии такой функции еще нет
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #36805651
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KhodИнформикс 9.30
тогда вручную запрограммируйте на spl, 1 строка isleapyear и ~30 строк addmonths
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #36810780
Khod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С 1901 по 2099 года достточно 7 вариантов.
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #36810960
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #36819522
Khod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую стандарты дат для России и Украины (дней 29 в феврале).
Ну, и учитываю, что 2000 год - высокосный (хотя не всегда это работает для столетий):

Код: plaintext
1.
2.
3.
4.
5.
6.
 and ((day(lpw.datedismissal) <>  31 ) and (month (lpw.datedismissal) <>  1 ) and (lpw.datedismissal +  1  UNITS month >= pc.datestatus) 
 or (day(lpw.datedismissal) =  31 ) and (month (lpw.datedismissal) in ( 7 ,  12 )) and (lpw.datedismissal +  1  UNITS month >= pc.datestatus) 
 or (day(lpw.datedismissal) =  31 ) and (month (lpw.datedismissal) in ( 3 ,  5 ,  8 ,  10 )) and ((lpw.datedismissal +  1 )+  1  UNITS month > pc.datestatus)
 or (day(lpw.datedismissal) <  29 ) and (month (lpw.datedismissal) =  1 ) and (lpw.datedismissal +  1  UNITS month >= pc.datestatus)
 or (day(lpw.datedismissal) >  29 ) and (month (lpw.datedismissal) =  1 ) and (MDY( 3 ,  1 , YEAR(lpw.datedismissal)) > pc.datestatus) 
 or (day(lpw.datedismissal) =  29 ) and (month (lpw.datedismissal) =  1 ) and (mod (YEAR(lpw.datedismissal),  4 ) =  0 ) and (lpw.datedismissal +  1  UNITS month >= pc.datestatus)
 or (day(lpw.datedismissal) =  29 ) and (month (lpw.datedismissal) =  1 ) and (mod (YEAR(lpw.datedismissal),  4 ) >  0 ) and (MDY( 3 ,  1 , YEAR(lpw.datedismissal)) > pc.datestatus))
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #36819534
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
o my lord, make me unsee it
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #36819663
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не проверял:
Код: 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.
CREATE PROCEDURE isleapyear(y int)
RETURNING boolean;
define r boolean;
if (mod(y ,  4 )= 0  and mod(y ,  100 ) !=  0  or mod(y ,  400 ) =  0 ) then 
  return 't';
else return 'f';
end if;
END PROCEDURE;


CREATE PROCEDURE myaddmonth(dt date, inc int) 
RETURNING date;
define d,m,y int;
let d = day(dt);
let m = mod(month(dt)- 1  + inc, 12 )+ 1 ;
let y = year(dt)+trunc(inc/ 12 );

if (m in ( 4  , 6 ,  9 ,  11 ) and d >  30 ) then
 let d =  30 ;
end if;

if (m =  2  and d >  28 ) then
   if isleapyear(y) then 
     let d =  29 ;
   else 
     let d =  28 ;
   end if;
end if;

 return mdy(m,d,y);
END PROCEDURE;


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
>  select myaddmonth(to_date('30.08.2010','%d.%m.%Y'),1) from table(set{1});

09/30/2010

>  select myaddmonth(to_date('31.08.2010','%d.%m.%Y'),1) from table(set{1});

09/30/2010

>  select myaddmonth(to_date('31.08.2010','%d.%m.%Y'),-6) from table(set{1});

02/28/2010
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #36820508
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
таки скосячил:
Код: plaintext
let y = year(dt)+trunc((month(dt)- 1  + inc) / 12 );
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #36988226
Khod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно сделать выборку^

Select a1, a2, a3, a4
Union
Select a1, a2, a3

Поля а4 нет. Как сделать так, чтобы запрос работал?
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #36988306
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KhodНужно сделать выборку^

Select a1, a2, a3, a4
Union
Select a1, a2, a3

Поля а4 нет. Как сделать так, чтобы запрос работал?

Select a1, a2, a3, a4
Union
Select a1, a2, a3, decode(1,2,3)
...
Рейтинг: 0 / 0
Помогите с выборкой из базы.
    #36989019
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев ДенисKhodНужно сделать выборку^

Select a1, a2, a3, a4
Union
Select a1, a2, a3

Поля а4 нет. Как сделать так, чтобы запрос работал?

Select a1, a2, a3, a4
Union
Select a1, a2, a3, decode(1,2,3)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Select a1, a2, a3, a4
Union
Select a1, a2, a3, <expression>


Select a1, a2, a3, a4
Union
Select a1, a2, a3, <expression> as a4

Select a1, a2, a3, a4
Union
Select a1, a2, a3, null as a4

В общем, as a4 - для красоты, выражение <expression> зависит от того что вы хотите увидеть в поле для результирующих записей, полученных из второй select-части union-запроса
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / Informix [игнор отключен] [закрыт для гостей] / Помогите с выборкой из базы.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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