gpt4 book ai didi

SQL server 做类似 Group By 任务

转载 作者:行者123 更新时间:2023-12-01 08:51:30 25 4
gpt4 key购买 nike

我有一张带有 SQL 服务器的表,如下所示,

Date        Value
---------------------------------------------------
08-01-2016 1
08-02-2016 1
08-03-2016 1
08-04-2016 1
08-05-2016 1
08-06-2016 2
08-07-2016 2
08-08-2016 2
08-09-2016 2.5
08-10-2016 1
08-11-2016 1

由于原始表太大,即使我使用了“Results to file”,它仍然会引发异常“System.OutOfMemoryException”。这就是我想把表格组织成这种的原因。

但我没有很好的逻辑来处理。因此,我想将表格更改为如下所示。

Date_from      Date_to      Value
-------------------------------------------------
08-01-2016 08-05-2016 1
08-06-2016 08-08-2016 2
08-09-2016 08-09-2016 2.5
08-10-2016 08-11-2016 1

我很欣赏你的想法!

最佳答案

通常称为组和岛屿问题。这是做到这一点的一个技巧

;WITH data
AS (SELECT *,Lag(Value, 1)OVER(ORDER BY Dates) [pVal]
FROM (VALUES ('08-01-2016',1 ),
('08-02-2016',1 ),
('08-03-2016',1 ),
('08-04-2016',1 ),
('08-05-2016',1 ),
('08-06-2016',2 ),
('08-07-2016',2 ),
('08-08-2016',2 ),
('08-09-2016',2.5 ),
('08-10-2016',1 ),
('08-11-2016',1 )) tc (Dates, Value)),
intr
AS (SELECT Dates,
Value,
Sum(Iif(pVal = Value, 0, 1)) OVER(ORDER BY Dates) AS [Counter]
FROM data)
SELECT Min(Dates) AS Dates_from,
Max(Dates) AS Dates_to,
Value
FROM intr
GROUP BY [Counter],
Value

关于SQL server 做类似 Group By 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40745319/

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