创建基于将范围转换为行的 sql 视图 [英] Create a sql view based converting ranges into rows

查看:26
本文介绍了创建基于将范围转换为行的 sql 视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个这样结构的表格

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.

谢谢

推荐答案

您可以使用递归 CTE 来完成此操作

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;

这篇关于创建基于将范围转换为行的 sql 视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆