创建基于将范围转换为行的sql视图

Tim*_*Tim 2 sql t-sql sql-view

我有一个像这样结构的表

ColA|ColB|LowRange|HighRange
----------------------------
  1   A     1         5
Run Code Online (Sandbox Code Playgroud)

我想创建一个视图,使数据以下列格式可用

ColA|ColB|RangeNumber
----------------------
  1   A       1
  1   A       2 
  1   A       3
  1   A       4
  1   A       5
Run Code Online (Sandbox Code Playgroud)

我对观点不够熟悉所以我需要一些方向.

谢谢

axb*_*unt 5

您可以使用递归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;
Run Code Online (Sandbox Code Playgroud)