powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как сделать запрос?
16 сообщений из 16, страница 1 из 1
Как сделать запрос?
    #32476951
Югг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица с данными и там есть два поля год и месяц


Код: plaintext
1.
2.
3.
4.
5.
6.
Table1
 ID
 Summ
 Dolg
 God
 Mes


Необходимо написать запрос который выведет данные по текущему году и месяцу (т.е заданному) и по предыдущему месяцу. Но может быть ситуация, что данных для предыдущего периода нет, а нужно чтобы все равно выводилось. Например.

Код: plaintext
1.
2.
3.
 ID       SUMM     DOLG    GOD   MES
  1          256 . 36      25 . 02     2004      1 
  2          350           56        2004       2 



Задаем текущий период god = 2004 mes = 1


Результат
Код: plaintext
1.
2.
 ID       SUMM     DOLG    GOD   MES  ID1    SUMM1  DOLG    GOD   MES
  1          256 . 36      25 . 02     2004      1                   
...
Рейтинг: 0 / 0
Как сделать запрос?
    #32477009
Фотография VF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня вопрос:
а что есть поля справа SUMM1 DOLG GOD MES
как-то непонятно (мне по крайней мере) что там должно быть... данные за предидущий месяц или как?
...
Рейтинг: 0 / 0
Как сделать запрос?
    #32477029
Югг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да там должны быть данные за предыдущий месяц.
Я немножко ошиблась результат такой:

ID SUMM DOLG GOD MES ID1 SUMM1 DOLG1 GOD1 MES1
1 256.36 25.02 2004 1

Это в том случае, если данных за предыдущий меся нет или

ID SUMM DOLG GOD MES ID1 SUMM1 DOLG1 GOD1 MES1
1 256.36 25.02 2004 1 2 350 152 2003 12
...
Рейтинг: 0 / 0
Как сделать запрос?
    #32477047
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ID - ключевое поле?
...
Рейтинг: 0 / 0
Как сделать запрос?
    #32477048
Югг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да там должны быть данные за предыдущий месяц.
Я немножко ошиблась результат такой:

Код: plaintext
1.
2.
ID SUMM DOLG GOD MES ID1 SUMM1 DOLG1 GOD1 MES1 
 1   256 . 36   25 . 02   2004   1  

Это в том случае, если данных за предыдущий меся нет или

Код: plaintext
1.
2.
ID SUMM DOLG GOD MES ID1 SUMM1 DOLG1 GOD1 MES1 
 1   256 . 36   25 . 02   2004    1      2      350        152       2003   12 


если данные есть
...
Рейтинг: 0 / 0
Как сделать запрос?
    #32477050
Югг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to FreemanZAV

Ага, идентификатор.
...
Рейтинг: 0 / 0
Как сделать запрос?
    #32477056
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ID откуда берется?
...
Рейтинг: 0 / 0
Как сделать запрос?
    #32477058
Югг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Генерю при добавлении записей.
...
Рейтинг: 0 / 0
Как сделать запрос?
    #32477118
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос бессмысленный. Получается две выборки:
SELECT ID SUMM DOLG GOD MES from table1 WHERE GOD=2004 AND MES=1

и
SELECT ID SUMM DOLG GOD MES from table1 WHERE GOD=2003 AND MES=12

Их нужно объединить причем горизонтально. Я правильно понял?
...
Рейтинг: 0 / 0
Как сделать запрос?
    #32477122
Фотография VF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы сделал хранимую процедуру используя
Код: plaintext
1.
2.
3.
4.
5.
6.
for select * from tabl where mes=:p_mes into :id,:summ,:dolg,:god,:mes
do begin
...
for select * from tabl where mes=(:mes- 1 ) into ...
do begin
...
suspend


потом в гриде отобразил бы как надо...

только вот ещё проверку на первый месяц года надо забабахать, чтоб ещё и год менял...

ну по крайней мере нечто в этом духе ИМХО...
...
Рейтинг: 0 / 0
Как сделать запрос?
    #32477133
Югг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to FreemanZAV

Именно так, нужно объединить горизонтально
...
Рейтинг: 0 / 0
Как сделать запрос?
    #32477138
Югг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to VF

Да вот как-то не хотелось пользоваться процедурами, думала обойтись вьюшкой или вообще просто запросом
...
Рейтинг: 0 / 0
Как сделать запрос?
    #32477185
Фотография VF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну так можно и вьюхой делать, только надо подумать...
а чем ХП не устраивает?
...
Рейтинг: 0 / 0
Как сделать запрос?
    #32477198
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Югг Именно так, нужно объединить горизонтально
А по какому критерию объединять, по виртуальному номеру записи каждого запроса?
...
Рейтинг: 0 / 0
Как сделать запрос?
    #32477199
Югг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да в принципе можно и через ХП. Ладно попробую, через ХП. Я просто долго в Оракле писала, привыкла запросами и вьюерами пользоваться. :)
...
Рейтинг: 0 / 0
Как сделать запрос?
    #32477410
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Югг, попробуй join.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как сделать запрос?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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