Попытка консолидировать пары отчетных периодов в запросе, суммирующем суммы в долларах - PullRequest
0 голосов
/ 20 декабря 2018

Я борюсь с тем, как получить запрос для суммирования пар учетных периодов, как если бы они были одним значением вместо двух.В основном у нас есть каждый период, и у него есть соответствующий период корректировки (например, 4 и 904), и я хочу суммировать их вместе, так как мой запрос возвращает их в виде отдельных строк.Я хочу, чтобы 904 по существу считался 4 запросом.Мне нужно делать это для каждого периода с 1 по 12 (и с 901 по 912), поскольку меня интересует только наличие различий между месяцами и не интересно, есть ли различия между периодом и периодом корректировки.

SELECT PROJECT_ID, ACCOUNTING_PERIOD, SUM(POSTED_BASE_AMT) as POSTED_AMT
FROM PS_LEDGER
WHERE LEDGER = 'ACTUALS'
AND FISCAL_YEAR = '2019'
AND (PROJECT_ID like 'PG%' OR PROJECT_ID LIKE 'GG%')
AND ACCOUNT BETWEEN '40000' AND '79999'
AND ACCOUNTING_PERIOD <> 999
GROUP BY PROJECT_ID, ACCOUNTING_PERIOD
HAVING SUM(POSTED_BASE_AMT) <> 0
ORDER BY PROJECT_ID, ACCOUNTING_PERIOD;

Мои результаты с такими:

PROJECT_ID             ACCOUNTING PERIOD       POSTED_AMT
GG000000                       4                    -100
GG000000                      904                    100

И для целей этого запроса я хотел бы, чтобы это было 0

Ответы [ 3 ]

0 голосов
/ 20 декабря 2018

Похоже, это то, что вы хотите:

SELECT PROJECT_ID, 
       ACCOUNTING_PERIOD, 
       SUM(POSTED_BASE_AMT) OVER 
         ( PARTITION BY MOD(Accounting_Period,100)
         ) as POSTED_AMT
FROM PS_LEDGER
WHERE LEDGER = 'ACTUALS'
AND FISCAL_YEAR = '2019'
AND (PROJECT_ID like 'PG%' OR PROJECT_ID LIKE 'GG%')
AND ACCOUNT BETWEEN '40000' AND '79999'
AND ACCOUNTING_PERIOD <> 999;
0 голосов
/ 27 декабря 2018

Решения от Пола X действительно помогли, но мне нужно было сначала выполнить запрос и получить не суммированные объявленные базовые суммы, а затем поместить их во вложенный выбор в запросе, например:

SELECT PROJECT_ID,ACCOUNTING_PERIOD, СУММА (POSTED_BASE_AMT) в качестве СУММУ ОТ (SELECT project_id, случай, когда ACCOUNTING_PERIOD> 900 ТОГДА ACCOUNTING_PERIOD - 900 ИНАЧЕ ACCOUNTING_PERIOD КОНЕЦ ACCOUNTING_PERIOD, POSTED_BASE_AMT ОТ PS_LEDGER ГДЕ LEDGER = 'ACTUALS' И FISCAL_YEAR = '2019' и (pROJECT_ID как 'PG%'ИЛИ PROJECT_ID, КАК 'GG%') И УЧЕТНАЯ ЗАПИСЬ МЕЖДУ '40000' И '79999' И ACCOUNTING_PERIOD <> 999) GROUP BY PROJECT_ID, ACCOUNTING_PERIOD
ИМЕЯ СУММУ (POSTED_BASE_AMT) <> 0_O_D_D_T_T_T_T_T_T_T_T_T_K_T_T_T_T_C_T_T_T_O_C_T_T_T_T_T_O_CER_JT1005 * спасибо за вашу помощь всем !!

0 голосов
/ 20 декабря 2018

Предполагая, что период корректировки всегда составляет от 901 до 912, вы можете просто вычесть 900, и группа объединит его с исходным периодом.

SELECT PROJECT_ID, 
CASE WHEN ACCOUNTING_PERIOD<900 THEN ACCOUNTING_PERIOD ELSE 900-ACCOUNTING_PERIOD END ACCOUNTING_PERIOD, 
SUM(POSTED_BASE_AMT) as POSTED_AMT
FROM PS_LEDGER
WHERE LEDGER = 'ACTUALS'
AND FISCAL_YEAR = '2019'
AND (PROJECT_ID like 'PG%' OR PROJECT_ID LIKE 'GG%')
AND ACCOUNT BETWEEN '40000' AND '79999'
AND ACCOUNTING_PERIOD <> 999
GROUP BY PROJECT_ID, CASE WHEN ACCOUNTING_PERIOD<900 THEN ACCOUNTING_PERIOD ELSE 900-ACCOUNTING_PERIOD END 
HAVING SUM(POSTED_BASE_AMT) <> 0
ORDER BY PROJECT_ID, CASE WHEN ACCOUNTING_PERIOD<900 THEN ACCOUNTING_PERIOD ELSE 900-ACCOUNTING_PERIOD END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...