Sql server 将连续的日期范围分组
我有一个包含此数据的表格(当前可用价格MinStay IdRate): 是否可以创建一个查询(无存储过程)来检索这样的结果Sql server 将连续的日期范围分组,sql-server,sql-server-2008,tsql,sql-server-2012,Sql Server,Sql Server 2008,Tsql,Sql Server 2012,我有一个包含此数据的表格(当前可用价格MinStay IdRate): 是否可以创建一个查询(无存储过程)来检索这样的结果 2014-12-01 2014-12-05 0 0.00 0 123456 2014-12-06 2014-12-07 2 124.00 0 123456 2014-12-08 2014-12-13 0 0.00 0 123456 我试过了,但它错了 SELECT Min([CurrentDay]) ,Max([CurrentDay]
2014-12-01 2014-12-05 0 0.00 0 123456
2014-12-06 2014-12-07 2 124.00 0 123456
2014-12-08 2014-12-13 0 0.00 0 123456
我试过了,但它错了
SELECT Min([CurrentDay])
,Max([CurrentDay])
,[Availability]
,[Price]
,[MinStay]
,[IdRate]
FROM [ChannelBooking].[dbo].[Inventory]
GROUP BY Price, MinStay, [IdRate], [Availability]
数据库是SQL Server 2008,实际上我是通过软件实现的。好的,也许我找到了解决方案:
WITH q AS
(
SELECT [Availability], [Price],CurrentDay,
ROW_NUMBER() OVER (PARTITION BY [Availability], [Price] ORDER BY CurrentDay) AS rnd,
ROW_NUMBER() OVER (PARTITION BY [Availability] ORDER BY CurrentDay) AS rn,
ROW_NUMBER() OVER (ORDER BY CurrentDay) AS colID
FROM [Inventory]
WHERE (CurrentDay >= '12-01-2014' and CurrentDay <= '12-31-2014')
)
SELECT MIN(CurrentDay), MAX(CurrentDay), [Availability], [Price]
FROM q
GROUP BY [Availability], [Price], rnd - rn, rnd - colID
ORDER BY MIN(CurrentDay)
,其中q为
(
选择[可用性]、[价格]、当前日期、,
(按[可用性]划分,[价格]按当前日期的订单)上的行号()为rnd,
(按[Availability]顺序按CurrentDay划分)上的行号()为rn,
(按当前日期排序)上的行号()为colID
来自[库存]
其中(CurrentDay>='12-01-2014'和CurrentDay我需要开始日期和结束日期,查询正常,但结果错误。
WITH q AS
(
SELECT [Availability], [Price],CurrentDay,
ROW_NUMBER() OVER (PARTITION BY [Availability], [Price] ORDER BY CurrentDay) AS rnd,
ROW_NUMBER() OVER (PARTITION BY [Availability] ORDER BY CurrentDay) AS rn,
ROW_NUMBER() OVER (ORDER BY CurrentDay) AS colID
FROM [Inventory]
WHERE (CurrentDay >= '12-01-2014' and CurrentDay <= '12-31-2014')
)
SELECT MIN(CurrentDay), MAX(CurrentDay), [Availability], [Price]
FROM q
GROUP BY [Availability], [Price], rnd - rn, rnd - colID
ORDER BY MIN(CurrentDay)