emi_sastra
asked on
From Range Data To Full Detail Range Data
Hi All,
I have below data :
1 AUDI
55 AUDI
109 ALFA ROMEO
127 BMW
181 BMW
Open in new window
I want to convert it into :
1 AUDI
2 AUDI
..
55
56 AUDI
.
.
108 AUDI
109 ALFA ROMEO
110 ALFA ROMEO
.
.
126
And etc.
How could I do it ?
I have below data :
1 AUDI
55 AUDI
109 ALFA ROMEO
127 BMW
181 BMW
Open in new window
I want to convert it into :
1 AUDI
2 AUDI
..
55
56 AUDI
.
.
108 AUDI
109 ALFA ROMEO
110 ALFA ROMEO
.
.
126
And etc.
How could I do it ?
which version of SQL server?
that will work:
DECLARE @cars TABLE (
ID INT,
Make VARCHAR(50)
)
DECLARE @Output TABLE (
ID INT,
Make VARCHAR(50)
)
INSERT INTO @cars ( ID, Make )
VALUES (1, 'Audi')
, (55, 'Audi')
, (109, 'ALFA ROMEO')
, (127, 'BMW')
, (181, 'BMW')
SELECT * FROM @cars ORDER BY ID
DECLARE @ID INT
DECLARE @Make VARCHAR(50)
DECLARE @PrevID INT
DECLARE @PrevMake VARCHAR(50)
DECLARE db_cursor CURSOR FOR
SELECT ID, Make FROM @cars ORDER BY ID
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @ID, @Make
WHILE @@FETCH_STATUS = 0
BEGIN
--SELECT @ID, @Make, @PrevID, @PrevMake
IF @PrevID IS NULL
BEGIN
SET @PrevID = @ID
SET @PrevMake = @Make
END
ELSE
BEGIN
WHILE @PrevID < @ID
BEGIN
INSERT INTO @Output ( ID, Make ) VALUES (@PrevID, @PrevMake )
SET @PrevID = @PrevID + 1
END
SET @PrevID = @ID
SET @PrevMake = @Make
END
FETCH NEXT FROM db_cursor INTO @ID, @Make
END
INSERT INTO @Output ( ID, Make ) VALUES (@PrevID, @PrevMake )
CLOSE db_cursor
DEALLOCATE db_cursor
SELECT * FROM @Output ORDER BY ID
ASKER
Hi Eric,
Is there any other way than using cursor ?
Thank you.
Is there any other way than using cursor ?
Thank you.
which version of SQL server?
ASKER
SQL 2014
Thank you.
Thank you.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Hi Eric,
Thank you very much for your help.
Thank you very much for your help.