【发布时间】:2021-05-09 22:50:51
【问题描述】:
我有一张这样的桌子
CREATE TABLE Levels
([userid] int, [counter1] int, [counter2] int, [date] datetime)
;
counter2 是一个增量值。 date 只是创建行的日期时间。 counter1 是一个可以采用不同整数值的字段。而userid是用户的id。
这是数据示例。您可以在 sqlfiddle 中找到一个包含两个用户的更大示例
| userid | counter1 | counter2 | date |
|--------|----------|----------|----------------------|
| 123 | 6 | 42 | 2010-07-31T00:12:28Z |
| 123 | 6 | 43 | 2010-11-20T00:11:15Z |
| 123 | 6 | 44 | 2011-03-12T00:15:07Z |
| 123 | 5 | 45 | 2011-07-02T01:11:09Z |
| 123 | 5 | 46 | 2011-10-22T00:24:18Z |
| 123 | 5 | 47 | 2012-02-10T23:51:54Z |
| 123 | 5 | 48 | 2012-06-01T23:43:26Z |
| 123 | 5 | 49 | 2012-09-21T23:43:59Z |
| 123 | 4 | 50 | 2013-01-11T23:52:43Z |
| 123 | 4 | 51 | 2013-05-03T23:49:25Z |
| 123 | 4 | 52 | 2013-08-23T23:48:24Z |
| 123 | 3 | 53 | 2013-12-14T00:01:20Z |
| 123 | 3 | 54 | 2014-04-04T23:45:45Z |
| 123 | 4 | 55 | 2014-07-25T23:44:34Z |
| 123 | 5 | 56 | 2014-11-14T23:46:11Z |
我尝试做的是计算counter1 在更改之前具有相同值的次数。为什么我在 stackoverflow 中找到的其他问题都不起作用?
-
counter1字段以后可以多次获得相同的值,我不想算作相同的情况。 - 我在 SQL Server 2008 中工作,
LAG函数不可用
sqlfiddle 中完整示例的期望结果是
| userid | counter1 | count |
|--------|----------|-------|
| 123| 6| 3|
| 123| 5| 5|
| 123| 4| 3|
| 123| 3| 2|
| 123| 4| 1|
| 123| 5| 1|
| 123| 6| 2|
| 123| 5| 5|
| 123| 4| 2|
| 123| 5| 1|
| 123| 4| 5|
| 123| 5| 5|
| 345| 6| 2|
| 345| 6| 9|
【问题讨论】:
-
您为什么使用不受支持的软件?
-
这不是我的决定 :( @GordonLinoff
标签: sql sql-server tsql sql-server-2008