Определение амортизации по финансовым годам в PeopleSoft Query Manager - PullRequest
0 голосов
/ 19 июня 2019

Я прошу прощения, если это было где-то рассмотрено, но я не нашел ничего, что вполне соответствует моим конкретным потребностям. В PeopleSoft Query Manager мы пытаемся создать отчет, который прогнозирует амортизацию через 5 лет или около того. Мы хотим, чтобы столбцы были финансовым годом, и мы хотим, чтобы возвращаемые значения были годовой амортизацией по активам по бизнес-единицам.

До сих пор мы пытались создать агрегированное выражение, которое будет суммировать амортизацию активов. Это простое выражение работает само по себе, поскольку оно суммирует ежемесячную амортизацию по активам. Однако мы хотели бы создать 5+ столбцов с 5+ из этих выражений совокупных сумм на основе финансового года. Таким образом, в первом столбце «числовые данные» будет отображаться амортизация за 2019 г., во втором - 2020 г. и т. Д.

Теперь позвольте мне предоставить заявление об отказе от ответственности и сказать, что я бухгалтер, а не специалист по кодам, поэтому я здесь не новичок. Но мы попытались встроить функцию агрегированной суммы в case или decode и не смогли заставить ее работать с любыми такими функциями условного типа. Однако наверняка должен быть способ? (Для потенциальной дальнейшей ясности, если бы у нас были данные в excel, мы бы использовали что-то вроде = SUMIFS (столбец амортизации, столбец финансового года, 2019), а затем повторили бы это для оставшихся лет. Мы хотим получить этот же результат непосредственно из запроса хотя).

Ниже у нас есть два кода. Простая, которая работает, но не обеспечивает именно то, что нам нужно, а другая с условными функциями, которые мы не можем заставить работать.

`SELECT A.BUSINESS_UNIT, A.ASSET_ID, sum( A.DEPR) 
 FROM PS_DEPR_RPT A 
 WHERE ( A.BOOK = 'CORPORATE' 
 AND A.BUSINESS_UNIT = '50226') 
 GROUP BY  A.BUSINESS_UNIT,  A.ASSET_ID 
 HAVING ( sum( A.DEPR) <> 0)`

`SELECT A.BUSINESS_UNIT, A.ASSET_ID, CASE
 WHEN  A.FISCAL_YEAR = 2019 THEN sum( A.DEPR)
 END 
 FROM PS_DEPR_RPT A 
 WHERE ( A.BOOK = 'CORPORATE' 
 AND A.BUSINESS_UNIT = '50226') 
 GROUP BY  A.BUSINESS_UNIT,  A.ASSET_ID 
 HAVING ( CASE
 WHEN  A.FISCAL_YEAR = 2019 THEN sum( A.DEPR)
 END <> 0)`

Первый работает нормально, но не имеет необходимой информации о финансовом году. Теперь, да, мы можем использовать поле финансового года в качестве критерия, а затем создать файл Excel, используя sumifs или другие подобные формулы. Но мы действительно хотели бы не манипулировать данными в Excel, и кажется, что мы должны быть в состоянии создать это в PeopleSoft Query Manager.

Очевидно, что второй выглядит невежливо (я думаю, что люди, которые хорошо разбираются в SQL, бьются головой), и мы получаем эту ошибку:

Ошибка при выполнении запроса из-за ошибки SQL, код = 979, сообщение = ORA-00979: не выражение GROUP BY (50,380)

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

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

РЕДАКТИРОВАТЬ для текущих и предпочтительных результатов:

Как это выглядит, как есть

Как мы хотим, чтобы это выглядело

Заранее спасибо!

...