This is the table I can get from Select * from table1
CREATE TABLE Table1 (
"StayDate" date NOT NULL,
"Type" char(3) NOT NULL,
"Rate" numeric(7,2) NOT NULL,
"CityNo" int NOT NULL,
"RoomNo" int NOT NULL,
CONSTRAINT PK_Table1 PRIMARY KEY ( "StayDate", "CityNo", "RoomNo" )
);
INSERT INTO Table1 ( "StayDate", "Type", "Rate", "CityNo", "RoomNo" )
VALUES
( '2022-10-03', 'ALL', 10, 5001, 0 ),
( '2022-10-04', 'ALL', 10, 5001, 0 ),
( '2022-10-05', 'ALL', 101, 5001, 0 ),
( '2022-10-06', 'ALL', 101, 5001, 0 ),
( '2022-10-07', 'ALL', 101, 5001, 0 ),
( '2022-10-08', 'ALL', 101, 5001, 0 ),
( '2022-10-09', 'ALL', 101, 5001, 0 ),
( '2022-10-10', 'ALL', 101, 5001, 0 ),
( '2022-10-10', 'ALL', 101, 5001, 10000001 ),
( '2022-10-11', 'ALL', 12, 5001, 10000001 ),
( '2022-10-11', 'ALL', 10, 5001, 0 ),
( '2022-10-12', 'ALL', 12, 5001, 10000001 ),
( '2022-10-12', 'ALL', 10, 5001, 0 ),
( '2022-10-13', 'ALL', 10, 5001, 0 ),
( '2022-10-14', 'ALL', 10, 5001, 0 ),
( '2022-10-15', 'ALL', 10, 5001, 0 );
I want to retrieve data like below
I tried with below sql query:
SELECT
MIN( "StayDate" ) AS "From Date",
MAX( "StayDate" ) AS "To Date",
"Type",
"Rate",
"CityNo",
"RoomNo"
FROM
(
SELECT
*,
COUNT("chn") OVER( ORDER BY "StayDate" ) AS grp
FROM
(
SELECT
*,
CASE WHEN "Rate" != LAG("Rate") OVER( ORDER BY "StayDate" ) THEN 1 END AS chn
FROM
table1
) AS t
) AS t
--WHERE
-- "CityNo" = 5001
-- AND
-- "StayDate" BETWEEN '2022-10-03' AND '2022-10-15'
GROUP BY
"grp",
"Type",
"Rate",
"CityNo",
"RoomNo"
ORDER BY
"From Date";
But its not show the out put as I expected:
Can anyone help me to do this?