![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Затрудняюсь построить запрос [D7, 2000]
RebroFF © (2006-12-11 13:39:00)Добрый день.Есть dbf-таблица движения материалов. Поля sklad(цех), nom (номенклатурный номер),sum (сумма прихода или расхода), vid (определяет, чем явл. сумма:приходом или расходом. 40-расход, остальные значения-приход). Задача: выбрать только те записи, сгруппировав по номенклатурному номеру и по цехам, для которых остаток (приход-расход) >1000.
Запрос "sql40" (выбираем с видом 40):
SELECT nomer,sklad,
SUM(mtb60."sum") Summ
FROM mtb60
WHERE vid = "40"
GROUP BY nomer,sklad
Запрос "sqlnot40" (с видом не равным 40, т. е. приход):
SELECT nomer,sklad,
SUM(mtb60."sum") Summ, sum(kol) skol
FROM mtb60
WHERE vid<>"40"
GROUP BY nomer,sklad
Общий запрос:
SELECT
a.nomer, b.nomer,a.sklad,b.sklad,a.Summ SummA, b.Summ SummB, a.Summ - b.Summ SummAB,
FROM
"sumNot40.sql" a
JOIN "sum40.sql" b ON (a.nomer = b.nomer and a.sklad=b.sklad and a.sklad=:nomskl)
WHERE
a.Summ - b.Summ > 1000
Проблема в том, что, если по определённому номенк. номеру расхода не было, значит и нет соотв. записи для такого номера с видом "40", а значит a.Summ - b.Summ не имеет смысла. Но этом случае нужно считать расход равным 0 и в остаток попадает весь приход. Помогите реализовать. Заранее премного благодарен.
RebroFF (2006-12-11 13:57:00) [41]Тоже выход, но хотелось бы через запрос... Это реально?
Сергей М. (2006-12-11 13:54:00) [42]А почему бы не сделать все необходимые расчеты прямо в своем клиентском приложении ?
RebroFF (2006-12-11 13:46:00) [43]
> Субд какая ?
Вообще-то это АРМ, написанный не мной. Запрос нужен просто для печати отчёта определённого вида. Подключаюсь к фокспрошной базе через BDE.
Сергей М. (2006-12-11 13:42:00) [44]Субд какая ?