Похоже, работает всего, вы могли бы использовать windowed
SUM
:
SELECT dated
,SUM(abc) OVER(ORDER BY dated) AS abc
,SUM(def) OVER(ORDER BY dated) AS def
,SUM(gh) OVER(ORDER BY dated) AS gh
,SUM(jkl) OVER(ORDER BY dated) AS jkl
FROM t
ORDER BY dated;
LiveDemo
Выход:
╔═════════════════════╦═════╦═════╦════╦═════╗
║ dated ║ abc ║ def ║ gh ║ jkl ║
╠═════════════════════╬═════╬═════╬════╬═════╣
║ 05.01.2016 00:00:00 ║ 2 ║ 12 ║ 23 ║ 16 ║
║ 05.02.2016 00:00:00 ║ 13 ║ 19 ║ 28 ║ 24 ║
║ 05.03.2016 00:00:00 ║ 19 ║ 23 ║ 37 ║ 25 ║
╚═════════════════════╩═════╩═════╩════╩═════╝
EDIT:
, как получить количество, а также, как и для первой строки, счетчик равен 1, а для второго ряда это 2 в качестве еще одного столбца и так далее ....
Вы можете использовать COUNT
или ROW_NUMBER()
:
SELECT ...
,COUNT(*) OVER(ORDER BY dated) AS cnt
LiveDemo2
можно использовать некоторые вычисления, а ... как сумма (а) по (порядка датированному)/COUNT () 100/3 в НМЕ
Да, вы можете сделать весь спектр расчетов.Но следует помнить, что некоторые операции должны быть обернуты производной таблицы (CTE/подзапроса):
sum(abc) over (order by dated)/COUNT(*) OVER(ORDER BY dated)*100.0/3 as NMU
EDIT:
Это работает отлично, за исключением одной вещи, что сумма должна быть только в течение месяца, мудрый или четвертый, означает, что добавление должно продолжаться только до конца месяца, поэтому при изменении месяца/квартала значение должно начинаться с начала снова.
Затем вам нужно разделить на (год, месяц) или (год, квартал):
SELECT dated
,SUM(abc) OVER(PARTITION BY EXTRACT(year from dated),
EXTRACT(month from dated) ORDER BY dated) AS abc
или:
SELECT dated,
,SUM(abc) OVER(PARTITION BY to_char(dated, 'YYYY Q') ORDER BY dated) AS abc
Спасибо за ответ ... вместе с ним, как получить счетчик как и для первой строки, счетчик равен 1, а для второй строки - 2 в качестве другого столбца и т. д .... – abhi
с этой функцией 'over (order by)', могу ли я использовать некоторые вычисления ... как 'sum (abc) over (order by date)/count (*) * 100/3 как NMU' .. – abhi
Он отлично работает, за исключением того, что сумма должна быть только на месяц или квартал мудрый, означает, что добавление будет продолжаться только до тех пор, пока конец месяца, поэтому при изменении месяца/квартала значение должно начинаться с начала снова (т. значение первого дня) ...... – abhi