Две суммы для одного столбца и два разных, где условия с группировкой - PullRequest
0 голосов
/ 25 ноября 2018

Мой запрос на получение консолидированного пробного баланса с двумя разными периодами, одним из которых является начальное сальдо, а другим - за текущий период.

У меня есть таблица с именем JDT1:

JDT1 Table

Я хочу получить счет и общую сумму дебета и кредита с двумя разными условиями, связанными с начальным и текущим балансом.Мой запрос

Select Account, ProfitCode, FormatCode, Acctname, (Select sum(Debit) as  
OBDebit From JDT1 Where RefDate < {?From}),  (Select sum(Credit) as 
OBCredit From JDT1 Where RefDate < {?From}), (Select sum(Debit) as OBDebit 
From JDT1 Where RefDate >= {?From} and Refdate <= {?To}),  
(Select sum(Credit) as OBCredit From JDT1 Where RefDate >= {?From} 
 and  Refdate <= {?To}) From JDT1 Full outer join [OACT] on [JDT1].[Account]
= [OACT].[AcctCode] Full outer join [OPRC] on [JDT1].[ProfitCode] =
  [OPRC].[PrcCode] Group by Account, ProfitCode

Но, к сожалению, сумма сводится в одну сумму, как группа, а не влияет.

1 Ответ

0 голосов
/ 26 ноября 2018

У вас есть несколько проблем.

  1. При группировке любой элемент в списке выбора должен находиться в предложении group by.
  2. Вам необходимо отфильтровать суммы, чтобы соответствоватьгруппа по.
SELECT Account
      ,ProfitCode
      ,FormatCode
      ,Acctname
      ,(
          SELECT sum(Debit) AS OBDebit
          FROM JDT1 AS t
          WHERE RefDate < {?From}
              AND JDT1.Account = t.Account
              AND JDT1.ProfitCode = t.ProfitCode
          )
      ,(
          SELECT sum(Credit) AS OBCredit
          FROM JDT1 AS t
          WHERE RefDate < {?From}
              AND JDT1.Account = t.Account
              AND JDT1.ProfitCode = t.ProfitCode
          )
      ,(
          SELECT sum(Debit) AS OBDebit
          FROM JDT1 AS t
          WHERE RefDate >= {?From}
              AND Refdate <= {?To}
              AND JDT1.Account = t.Account
              AND JDT1.ProfitCode = t.ProfitCode
          )
      ,(
          SELECT sum(Credit) AS OBCredit
          FROM JDT1 AS t
          WHERE RefDate >= {?From}
              AND Refdate <= {?To}
              AND JDT1.Account = t.Account
              AND JDT1.ProfitCode = t.ProfitCode
          )
    FROM JDT1
     JOIN [OACT] ON [JDT1].[Account] = [OACT].[AcctCode]
     JOIN [OPRC] ON [JDT1].[ProfitCode] = [OPRC].[PrcCode]
    GROUP BY Account, ProfitCode, FormatCode ,Acctname
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...