gpt4 book ai didi

带重置的 SQL Server Row_Count

转载 作者:行者123 更新时间:2023-12-04 22:40:21 25 4
gpt4 key购买 nike

我有 6 列:

Date, Account, Side, Symbol, Currency, Reset Flag (0 Yes, 1 No)

我想对分区进行行计数,但每当 Reset Flag 列中出现 0 时,我都会重置行计数。前 5 列不是唯一的,但它们的组合形成了一组唯一的列。

请帮我解决这个问题!

由于某种原因,我研究过的所有其他解决方案都不起作用:/

最佳答案

这是一个缺口和孤岛式的问题。没有任何样本数据或期望的结果...

使用两个 row_number()通过重置标志识别组,在外部查询中另一个通过 ResetFlag 和在内部查询中创建的 grp 对行进行编号。

date, Account, Side, Symbol, Currency 的顺序更改为您希望作为行编号依据的那些列的顺序;对于三个 row_number() 中的每一个,让它们保持相同的顺序。

/* ----- */ 
select
date
, Account
, Side
, Symbol
, Currency
, ResetFlag
, rn = case when ResetFlag = 0 then 0
else row_number() over (
partition by ResetFlag, grp
order by date, Account, Side, Symbol, Currency)
end
from (
select *
, grp = row_number() over (order by date, Account, Side, Symbol, Currency)
- row_number() over (
partition by ResetFlag
order by date, Account, Side, Symbol, Currency)
from t
) s
order by date, Account, Side, Symbol, Currency

rextester 演示:http://rextester.com/VLCO32635

返回:

+------------+---------+------+--------+----------+-----------+----+
| date | Account | Side | Symbol | Currency | ResetFlag | rn |
+------------+---------+------+--------+----------+-----------+----+
| 2017-01-01 | 7 | 2 | 3 | 7,0000 | 1 | 1 |
| 2017-01-02 | 8 | 9 | 9 | 6,0000 | 1 | 2 |
| 2017-01-03 | 4 | 1 | 5 | 6,0000 | 1 | 3 |
| 2017-01-04 | 5 | 4 | 8 | 5,0000 | 0 | 0 |
| 2017-01-05 | 2 | 1 | 3 | 1,0000 | 1 | 1 |
| 2017-01-06 | 8 | 0 | 2 | 0,0000 | 0 | 0 |
| 2017-01-07 | 0 | 3 | 8 | 9,0000 | 1 | 1 |
| 2017-01-08 | 0 | 3 | 1 | 3,0000 | 1 | 2 |
+------------+---------+------+--------+----------+-----------+----+

关于带重置的 SQL Server Row_Count,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43288834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com