#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