Замените повторяющиеся элементы на 0, сохраняя один экземпляр - MS ACCESS - PullRequest
0 голосов
/ 25 июня 2018

У меня есть набор данных, который соответствует формату, подобному следующему:

Purchase_Order  PO_Spend    Receipt_Date
PO1           200,000.00    12/19/2017
PO1           200,000.00    11/20/2017
PO2           30,000.00       2/5/2018
PO2           30,000.00       1/2/2018
PO3           45,000.00       2/7/2018
PO3           45,000.00     11/20/2017
PO3           45,000.00     12/21/2017

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

Я хотел бы, чтобы мой набор данных выглядел примерно так:

Purchase_Order  PO_Spend    Receipt_Date
PO1          200,000.00     12/19/2017
PO1                0.00     11/20/2017
PO2           30,000.00       2/5/2018
PO2                0.00       1/2/2018
PO3           45,000.00       2/7/2018
PO3                0.00     11/20/2017
PO3                0.00     12/21/2017

Любые идеи о том, как решить, удалить эти дубликаты?Все что угодно - от простых запросов Access, до SQL for Access или VBA - поможет.

1 Ответ

0 голосов
/ 25 июня 2018

Рассмотрим коррелированный подзапрос, заключенный в условие IIF

SELECT p.Purchase_Order,     
       IIF((SELECT Count(*) FROM PO_Table sub
            WHERE sub.Purchase_Order = p.Purchase_Order
              AND sub.Receipt_Date <= p.Receipt_Date) = 1, p.PO_Spend, 0) AS [PO_Spend_Final],
       p.Receipt_Date
FROM PO_Table p
ORDER BY p.Purchase_Order, p.Receipt_Date

В качестве альтернативы рассмотрим DCount коррелированный расчет:

SELECT p.Purchase_Order,
       IIF(DCount("*", "PO_Table", "Purchase_Order='" & p.Purchase_Order 
                  & "' AND Receipt_Date <= #" & p.Receipt_Date & "#") = 1, PO_Spend, 0) As [PO_Spend_Final], 
       p.Receipt_Date
FROM PO_Table p
ORDER BY p.Purchase_Order, p.Receipt_Date

Обязательно обновите PO_Table до фактического имени таблицы во всех ссылках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...