Cуммы проводок к документу одной записью

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Bodybomber
Сообщения: 14
Зарегистрирован: 01 дек 2020, 08:15

Cуммы проводок к документу одной записью

Сообщение Bodybomber »

Доброго времени суток.

Прошу помочь в составлении запроса к БД по следующим критериям.
Бухгалтер хочет видеть в отчете по выполненным актам на оказание услуг katsopr.vidsopr = 211,
Код КА кому оказана услуга, наименование подразделения и балансовый счет, на которое отнесены затраты по оказанию услуги, сумму выручки, ндс и сумму затрат. Код подразделения
получаю из аналитики по счету кредита 90 11.

Код: Выделить всё

SQL QUERY qUsl =
SELECT  DISTINCT
        KATORG.CODE, KATSOPR.NSOPR, OBOROT.SCHETK, OBOROT.SUBSCHK, OBOROT.SUMOB, OBOROT.DATOB, OBOROT.SODPR, SPKAU.CODE
FROM KATSOPR
  LEFT JOIN OBOROT  ON KATSOPR.NREC = OBOROT.CSOPRDOC
        AND KATSOPR.VIDSOPR = OBOROT.TIDKGAL
  LEFT JOIN SPKAU   ON OBOROT.KAUKS[1] = SPKAU.NREC
  LEFT JOIN SPSOPR   ON KATSOPR.NREC = SPSOPR.CSOPR
  LEFT JOIN KATUSL   ON SPSOPR.CMCUSL = KATUSL.NREC
  LEFT JOIN KATORG   ON KATSOPR.CORG = KATORG.NREC
  LEFT JOIN DOGOVOR  ON KATSOPR.CDOGOVOR = DOGOVOR.NREC
  LEFT JOIN KATOTPED ON SPSOPR.COTPED = KATOTPED.NREC
WHERE KATSOPR.VIDSOPR = '211' AND   
  KATSOPR.DSOPR BETWEEN :dStart AND :dEnd AND
ORDER BY KATSOPR.NSOPR
В Результирующей выборке для каждого документа выбираются несколько записей с проводками. Пример Табл.1

NREC KA #док Schetk SubSchk KauKS[1] SumOB
зап1 k2 11111 90 11 1 1400 <-- [Выручка]
зап2 k2 11111 68 123 2 280 <-- [НДС]
зап3 k2 11111 90 11 1 280 <-- [НДС]
зап4 k2 11111 23 3 1231 <-- [Затраты]


Бухгалтер хочет видеть в отчете суммы по док-ту одной строкой
--------------------------------------------------------------------------------------------------------------
Код КА | №Док-та | Сумма Выручки | НДС | Затраты | Подразделение
--------------------------------------------------------------------------------------------------------------
k2 | 1111111 | 1400 | 280 | 1231 | склад1.
--------------------------------------------------------------------------------------------------------------
Можно ли составить прямой запрос SQL таким образом, чтобы развернуть значения поля [SumOb] из колонки в одну строку?

Или в отсутствии такой возможности в цикле бежать по всем проводкам и анализировать?


Пытался применить оператор PIVOT, но получил сообщение о синтаксической ошибке.

Код: Выделить всё

SELECT
      nodok, [90],  [23]
FROM oborot
PIVOT (SUM(sumob) FOR schetk in ([90], [23] ) as pvt;
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Cуммы проводок к документу одной записью

Сообщение Den »

Pivot в dsql галактическом к сожалению не поддерживается (
Но можно попробовать делать нужный group by и агрегирующий сумм вычислять по условию, где не нужно в else 0 отдавая
Как то так
select
....
sum(case when <нужно условие> then ob.sumob else CAST(0 as Double) end) as Sum1
.sum(case when <нужно условие> then ob.sumob else CAST(0 as Double) end) as Sum2
from
....
Ответить