Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
putilin

Запрос с union

18.11.2012, 14:38. Показов 2249. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, с запросом.

база FireBird

Таблица
CREATE TABLE OCB (
ID_OCB INTEGER,
OCB_DATE TIMESTAMP,
OCB_TOVAR_ID INTEGER,
OCB_KLIENT_ID INTEGER,
OCB_PRIHOD_KVO NUMERIC(16,4),
OCB_RASHOD_KVO NUMERIC(16,4)
);

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

select ocb_tovar_id, sum(OCB_Prihod_Kvo-OCB_Rashod_Kvo), sum(OCB_Prihod_Kvo) from
(select
ocb_tovar_id,
sum(OCB_Prihod_Kvo-OCB_Rashod_Kvo) ,
NULL
from ocb
where ocb_date <= '16.11.2012 00:00:00'
GROUP BY ocb_tovar_id

UNION ALL

select
ocb_tovar_id,
NULL,
sum(OCB_Prihod_Kvo) from ocb
where ocb_date between '01.11.2012 00:00:00' AND '01.12.2012 00:00:00'
GROUP BY ocb_tovar_id)
GROUP BY ocb_tovar_id

Конечно ничего не получается, в первой строке поля Sum надо как то подставить, не знаю как...
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.11.2012, 14:38
Ответы с готовыми решениями:

Insert и Union
Кто знает, скажите пожалуйста - почему не работает? (б.д. PARADOX) insert into &quot;:alias:Table1.db&quot; select * from...

Оптимизация запроса (union)
Есть условие select ... where &lt;условие1&gt; or &lt;условие2&gt; . Будет ли это оптимизацией, если запрос будет выглядеть так: select ... where...

Распаралелить select union all
Есть таблица куда нужно добавить записи из множества внешних таблиц ссылающихся на файлы из папок примонтированных к серверу. Я хочу...

2
Nalalysh
23.11.2012, 02:01
Цитата Сообщение от putilin Посмотреть сообщение
Помогите, пожалуйста, с запросом.

база FireBird

Таблица
CREATE TABLE OCB (
ID_OCB INTEGER,
OCB_DATE TIMESTAMP,
OCB_TOVAR_ID INTEGER,
OCB_KLIENT_ID INTEGER,
OCB_PRIHOD_KVO NUMERIC(16,4),
OCB_RASHOD_KVO NUMERIC(16,4)
);

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

select ocb_tovar_id, sum(OCB_Prihod_Kvo-OCB_Rashod_Kvo), sum(OCB_Prihod_Kvo) from
(select
ocb_tovar_id,
sum(OCB_Prihod_Kvo-OCB_Rashod_Kvo) ,
NULL
from ocb
where ocb_date <= '16.11.2012 00:00:00'
GROUP BY ocb_tovar_id

UNION ALL

select
ocb_tovar_id,
NULL,
sum(OCB_Prihod_Kvo) from ocb
where ocb_date between '01.11.2012 00:00:00' AND '01.12.2012 00:00:00'
GROUP BY ocb_tovar_id)
GROUP BY ocb_tovar_id

Конечно ничего не получается, в первой строке поля Sum надо как то подставить, не знаю как...
1. Тот запрос, что есть, можно попробовать записать с псевдонимами:
select ocb_tovar_id,A,B from
(select
ocb_tovar_id,
sum(OCB_Prihod_Kvo-OCB_Rashod_Kvo) A,
NULL
from ocb
where ocb_date <= '16.11.2012 00:00:00'
GROUP BY ocb_tovar_id

UNION ALL

select
ocb_tovar_id,
NULL,
sum(OCB_Prihod_Kvo) B
from ocb
where ocb_date between '01.11.2012 00:00:00' AND '01.12.2012 00:00:00'
GROUP BY ocb_tovar_id)
GROUP BY ocb_tovar_id

2.Попробовать что то в этом роде (логика запроса сохранена):
Select t.ocb_tovar_id, t1. ost, t2.prih
from ocb t,
(select ocb_tovar_id,
sum(OCB_Prihod_Kvo-OCB_Rashod_Kvo) over (partition by ocb_tovar_id) ost
from ocb
where ocb_date <= TO_Date('16.11.2012') )t1,
(select ocb_tovar_id,
sum(OCB_Prihod_Kvo) over (partition by ocb_tovar_id) prih
from ocb
where ocb_date between TO_Date('01.11.2012') AND TO_Date('01.12.2012') ) t2
where t.ocb_tovar_id=t1.ocb_tovar_id and t.ocb_tovar_id=t2.ocb_tovar_id


Но ведь товар не приходит и уходит одновременно, и в каждой записан или расход или приход, а не и то и другое одновременно? Но тогда надо сначала считать сумму прихода по товару, сумму расхода а потом уже вычитать одно из другого. Тогда как то так:
Select t.ocb_tovar_id, t1. p-t1.r , t2.prihod
from ocb t,
(select ocb_tovar_id,
sum(OCB_Prihod_Kvo) over (partition by ocb_tovar_id) p
sum(OCB_Rashod_Kvo) over (partition by ocb_tovar_id) r
from ocb
where ocb_date <= TO_Date('16.11.2012') ) t1,
(select ocb_tovar_id,
sum(OCB_Prihod_Kvo) over (partition by ocb_tovar_id) prihod
from ocb
where ocb_date between TO_Date('01.11.2012') AND TO_Date('01.12.2012') ) t2
where t.ocb_tovar_id=t1.ocb_tovar_id and t.ocb_tovar_id=t2.ocb_tovar_id
putilin
23.11.2012, 19:27
Спасибо большое, я уже разобрался....
Спасибо что не бросили и откликнулись...
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2012, 19:27
Помогаю со студенческими работами здесь

Общий поиск в обход union
Например у нас есть: select v1.field1, v1.field2, v1.field3 from example.table1 v1 where v1.field1 = 1 union select v2.field1,...

Как вставить идентификатор таблицы в Union
Добрый день. Хочу сделать запрос из двух таблиц объединив UNION, но мне необходимо понимать, какие данные из какой таблицы, как это...

Union all в Access - увеличение времени исполнения?
Есть 2 запроса Q1 и Q2 Время выполнения Q1 - 6 сек, Q2 - 4 сек Ok, надо UNION ALL этих запросов. SELECT * FROM Q1 UNION ALL ...

SP2-0042: unknown command "union all"
Всем доброго времени сутоr, столкнулся с такой проблемой делаю .bat файл который соединяется с БД и запускает SQL скрипт, который SPOOL'ит...

Datagrid и запрос union
Привет, немного запутался. Есть на одной форме DataGrid1 со своим набором записей Есть на второй форме DataGrid2 со своим набором...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru