Jon*_*han 1 sql sql-server partitioning sum
我正在尝试将列添加到当前行(在SQL Server中).我该怎么做呢?
select t1.CounterTime,
t1.StartTime,
t1.EndTime,
isNull(t1.value, 0) as value1,
-- How do I make Total1 the sum of t1.value over all previous rows?
sum( isNull(t1.value, 0) ) over (partition by t1.CounterTime order by t1.CounterTime) as Total1
from SomeTable t1
order by t1.CounterTime
Run Code Online (Sandbox Code Playgroud)
但我partition by弄错了......
?????????????????????????????????????????????????????????????????????????????????????????????????????
? ? CounterTime ? StartTime ? EndTime ? value1 ? Total1 ?
?????????????????????????????????????????????????????????????????????????????????????????????????????
? 1 ? 2015-03-17 12:00:00.000 ? 2015-03-17 00:00:00.000 ? 2015-03-18 00:00:00.000 ? 0 ? 0 ?
? 2 ? 2015-03-18 12:00:00.000 ? 2015-03-18 00:00:00.000 ? 2015-03-19 00:00:00.000 ? 0 ? 0 ?
? 3 ? 2015-03-19 12:00:00.000 ? 2015-03-19 00:00:00.000 ? 2015-03-20 00:00:00.000 ? 422 ? 422 ?
? 4 ? 2015-03-20 12:00:00.000 ? 2015-03-20 00:00:00.000 ? 2015-03-21 00:00:00.000 ? 989 ? 989 ?
? 5 ? 2015-03-21 12:00:00.000 ? 2015-03-21 00:00:00.000 ? 2015-03-22 00:00:00.000 ? 1162 ? 1162 ?
? 6 ? 2015-03-22 12:00:00.000 ? 2015-03-22 00:00:00.000 ? 2015-03-23 00:00:00.000 ? 524 ? 524 ?
?????????????????????????????????????????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
应该:
??????????
? Total1 ?
??????????
? 0 ?
? 0 ?
? 422 ?
? 1411 ?
? 2573 ?
? 3097 ?
??????????
Run Code Online (Sandbox Code Playgroud)
小智 5
试试这个
删除"分区依据"只使用"order by"
select t1.CounterTime,
t1.StartTime,
t1.EndTime,
isNull(t1.value, 0) as value1,
-- How do I make Total1 the sum of t1.value over all previous rows?
sum( isNull(t1.value, 0) ) over (order by t1.CounterTime) as Total1
from SomeTable t1
order by t1.CounterTime
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1895 次 |
| 最近记录: |