Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: Stanislav
Несуществующее поле не нашел. Как называется поле и в какой оно таблице? А то что где-то источник данных ссылается на несуществующие таблицы - это программе по барабану. Это влияет только на отображение таблиц - вместо имен отображается ID. Я просто не импортировал эти таблицы в пример, поэтому Акс и показывает, что их нет.
Я посмотрел твой пример Union - там как раз нет того что мне надо - слияния одинаковых контактов и суммирования долгов одинаковых контактов.
Попробовал сделать сумму полей в 2 запросах, а потом объединить их - результат тот же - не могу объединить.
Попробую еще раз сформулировать задачу, прежде всего для себя, потому что верно поставленная задача - половина дела.
Итак, у нас есть 2 запроса


SELECT OwnershipTransfer.ContactID, nz([ProductsCost],0)+nz([OtherCosts],0)+nz([Tax],0) AS Debt
FROM OwnershipTransfer;



SELECT Sale.ContactID, nz([ProductCost],0)+nz([DeliveryCost],0)+nz([PaymentCollectionCost],0)+nz([OtherCosts],0)+nz([Tax],0) AS Debt
FROM Sale;


Запросы выдают 2 поля: ContactID, Debt. Требуется написать запрос, производящий слияние поля ContactID и суммирование поля Debt для строк, подвергающихся слиянию.

Если мы напишем вот так:

SELECT ContactID
FROM DebtSale
UNION SELECT ContactID
FROM DebtOwnershipTransfer;


то получим:


ContactID
129
272
303



А если мы напишем вот так:

SELECT ContactID, Debt
FROM DebtSale
UNION SELECT ContactID, Debt
FROM DebtOwnershipTransfer;


то получим следующее:


ContactID Debt
129 15172
272 28990
303 15120
303 15130
303 15540
303 25210
303 30345



Очевидно, что поле Debt препятствует слиянию одинаковых значений поля ContactID, поскольку содержит в себе разные значения.

Вопрос: как подвергнуть слиянию поле ContactID, просуммировав при этом значения поля Debt?

Если я пытаюсь делать вот так:

SELECT ContactID, Sum(Debt) AS SumOfDebt
FROM DebtSale
UNION SELECT ContactID, Sum(Debt) AS SumOfDebt
FROM DebtOwnershipTransfer;


то получаю ошибку: "Вы пытаетесь выполнить запрос, в котором нет выражения ContactID как части вычисляемой функции."

Если делаю так:

SELECT ContactID, Sum(Debt) AS SumOfDebt
FROM DebtSale
GROUP BY ContactID
UNION SELECT ContactID, Sum(Debt) AS SumOfDebt
FROM DebtOwnershipTransfer
GROUP BY ContactID;


то получаю:

ContactID    SumOfDebt
129    15172
272    28990
303    25210
303    76135


такой результат недостаточен, потому что поля ContactID, Debt были подвергнуты слиянию (группировке) и суммированию в рамках составных частей запроса UNION, но не были подвергнуты слиянию и суммированию в самом запросе UNION.


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.