Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将连续的日期范围分组_Sql Server_Sql Server 2008_Tsql_Sql Server 2012 - Fatal编程技术网

Sql server 将连续的日期范围分组

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]

我有一个包含此数据的表格(当前可用价格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])
      ,[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)