Как получить строки в столбцы? Секст-запрос

#sql #datetime #ms-access #sum #pivot

#sql #дата и время #ms-access #сумма #сводная

Вопрос:

Здесь запрос, который я написал, очень простой.

  SELECT        GeneralLedger, YEAR(ReportingDate) AS jaar, MONTH(ReportingDate) AS periode, SUM(AmountDCDebit - AmountDCCredit) AS Saldo
FROM            dbo.GeneralLedgerBalances
GROUP BY GeneralLedger, YEAR(ReportingDate), MONTH(ReportingDate)
HAVING        (YEAR(ReportingDate) = 2020)
  

результат, который я получаю,

введите описание изображения здесь

Как я могу получить этот результат:

введите описание изображения здесь

Я хочу получить точки в столбце, как я могу изменить свой запрос?

Ответ №1:

Вы можете использовать условную агрегацию:

 SELECT
    GeneralLedger, 
    YEAR(ReportingDate) AS jaar, 
    SUM(IIF(MONTH(ReportingDate) =  1, AmountDCDebit - AmountDCCredit, 0)) AS Saldo01,
    SUM(IIF(MONTH(ReportingDate) =  2, AmountDCDebit - AmountDCCredit, 0)) AS Saldo02,
    ...
    SUM(IIF(MONTH(ReportingDate) = 12, AmountDCDebit - AmountDCCredit, 0)) AS Saldo12
FROM dbo.GeneralLedgerBalances
WHERE (YEAR(ReportingDate) = 2020)
GROUP BY GeneralLedger, YEAR(ReportingDate)
  

Комментарии:

1. Привет, если я попробую это, я получу эту ошибку: Ошибка в списке аргументов функции: «СУММА» не распознана. Невозможно проанализировать текст запроса.

2. @Barendrecht . , , Вы делаете что-то не так. SUM() это очень распространенная функция SQL.

3. @Barendrecht: между выражениями не хватает запятых SUM()