Текущий итог в SQL

#sql-server

#sql-сервер

Вопрос:

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

 use tempdb

SELECT
  CONVERT(VARCHAR(7),PGLD,126) AS PMONTH,
    CLN,
    DIN,
    MAN,
    SUM(ALID) OVER (ORDER BY PGLD ROWS UNBOUNDED PRECEDING) AS CUMULATIVE_ALID,
    ALID
    into #1
FROM tempdb.dbo."AT"
GROUP BY
    CONVERT(VARCHAR(7),PGLD,126),
    PGLD,
    CLN,
    DIN,
    MAN,
    ALID;

SELECT PMONTH, CUMULATIVE_ALID FROM #1``
  

Пожалуйста, помогите, как получить данные

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

1. Можете ли вы добавить образцы данных и ожидаемый результат

2. Над какой версией SQL Server вы работаете?

3. @TT. Definitely 2012

4. Удалить столбец PGLD из предложения GROUP BY

Ответ №1:

Вам не нужна GROUP BY в PGLD.

 use tempdb

SELECT
  CONVERT(VARCHAR(7),PGLD,126) AS PMONTH,
    CLN,
    DIN,
    MAN,
    SUM(ALID) OVER (ORDER BY PGLD ROWS UNBOUNDED PRECEDING) AS CUMULATIVE_ALID,
    ALID
    into #1
FROM tempdb.dbo."AT"
GROUP BY
    CONVERT(VARCHAR(7),PGLD,126),
    PGLD,
    CLN,
    DIN,
    MAN,
    ALID;

SELECT PMONTH, CUMULATIVE_ALID FROM #1
  

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

1. Спасибо, сэр, за ответ.. Если я удаляю PGLD в предложении Group by, отображается ошибка.

2. Сообщение 8120, уровень 16, состояние 1, строка 8, столбец ‘tempdb.dbo.AT.PGLD’ недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY.

3. Например, dataset:

4. PGLD CLN DIN MAN ALID 2014-02-01 CHIM CHNM CHCN 23 2014-02-01 CHIM CHNM NHIN 11 2014-02-01 CHIM CHNM PNN 8 2014-02-03 CHIM CHFM CHAN 1 2014-02-03 CHIM CHFM CHBN 1 2014-02-03 CHIM CHFM CHBN 3 2014-02-03 CHIM CHFM CHCN 2 2014-02-03 CHIM CHFM CHLN 1 2014-02-03 CHIM CHFM CHLN 1 2014-02-03 CHIM CHFM CHLN 1 2014-02-03 CHIM CHFM CHLN 1 CHLFN 4 2014-02-03 ЧИМ ЧФМ ЧОН 1

5. Ожидаемый результат: февраль 2014 — 55