I have a table structured like so
ColA|ColB|LowRange|HighRange
----------------------------
1 A 1 5
I would like to create a view that will make the data available in the following format
ColA|ColB|RangeNumber
----------------------
1 A 1
1 A 2
1 A 3
1 A 4
1 A 5
I'm not familiar enough with views so I need some direction.
Thanks
You can accomplish this using a recursive CTE
CREATE TABLE ranges (
ColA int,
ColB char,
LowRange int,
HighRange int,
);
INSERT INTO ranges
VALUES (1, 'A', 1, 5),
(2, 'B', 5, 10);
GO
CREATE VIEW range_view
AS
WITH each AS
(
SELECT ColA, ColB, LowRange AS n, HighRange
FROM ranges
UNION ALL
SELECT ColA, ColB, n + 1, HighRange
FROM each
WHERE n + 1 <= HighRange
)
SELECT ColA, ColB, n
FROM each
GO
SELECT * FROM range_view
DROP VIEW range_view
DROP TABLE ranges;
The only way I can figure this one out is by creating a separate table that has all the numbers and then join to the original table. I created a table called 'allnumbs' and it has only one column with the name of 'num' and a record for every number between 1 and 10. Then you join them.
select cola, colb, b.num from temp a
join allnumbs b on b.num >= a.lownum and b.num <= a.highnum
Table temp is your table that your displayed. Hope this helps.