当前位置: 首页 > 面试题库 >

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

酆晔
2023-03-14
问题内容

我有一个像这样的表

ColA|ColB|LowRange|HighRange
----------------------------
  1   A     1         5

我想创建一个视图,以下列格式提供数据

ColA|ColB|RangeNumber
----------------------
  1   A       1
  1   A       2 
  1   A       3
  1   A       4
  1   A       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;


 类似资料:
  • 问题内容: 我如何让SQL重复一些基于集合的操作任意次数而不会循环?如何让SQL对一定范围的数字执行运算?我基本上是在寻找一种基于集合的for循环的方法。 我知道我可以创建一个包含整数(例如1到1000)的小表,然后将其用于该范围内的范围操作。 例如,如果我有该表,则可以选择查找数字100-200的总和,如下所示: 有任何想法吗?我有点在寻找适用于T-SQL的东西,但是任何平台都可以。 问题答案:

  • 我需要创建,让我们说,12缩略图从视频,但跳过10%在开始和结束。我找到了这个东西,但它只是每1000帧拍一次。在我的情况下,这个范围将是可变的,如果它将在秒内更好。不知道如何使用ffmpeg来实现这一点,不要使用它太多。

  • 问题内容: 如果我有一个变量,如何将数字1-50放入数组中? 问题答案: 这可以通过使用简单的for循环来解决:

  • 问题内容: 是否有任何技术可以允许这样的行设置 产生结果 实际上,这是行到范围的操作。我正在Oracle Land上玩,并且希望您提出任何建议。 问题答案: 我觉得可能可以对此进行改进,但是它可以起作用:

  • 问题内容: 我正在尝试使用SSMS在Azure SQL中创建范围凭证。 我不断遇到错误消息,指出“’cred-name’附近的语法不正确。预期为’=’。” 我不确定我的语法是不正确的,因为我过去已经成功完成了此确切命令,所以我不确定发生了什么变化。我以为可能只是intellisense搞砸了,所以我将SSMS实例从17.3更新到17.7,但是我仍然收到相同的错误消息。 有谁知道可能会发生什么变化?

  • 问题内容: 是否可以基于层次结构/ cte创建视图? 我看过一个有关如何基于链接递归查询生成结果集的示例。 我已经附上了ddl和声明。 谢谢你, 埃尔默 问题答案: 后已被指定(超出右括号),您需要选择从CTE的所有值: 这是构成视图的实际选择查询。 这是一个完整的工作示例,其中选择了视图的最终输出,以及一些其他语句,以允许这些语句在SQL Server Management Studio中一次执