小编Art*_*Art的帖子

SQL Server相当于Oracle CONNECT BY和LEVEL伪列

请帮助将Oracle查询转换为等效的SQL Server:

SELECT (LEVEL+1-1) AS lvl 
  FROM dual
CONNECT BY LEVEL <= 10
/
Run Code Online (Sandbox Code Playgroud)

输出是1到10之间的数字:

LVL
----
1
2
3
...
10
Run Code Online (Sandbox Code Playgroud)

我知道SQL Server中有层次结构方法,内置插件GetLevel等等.这可以用来得到相同的结果吗?

如果需要(不确定)创建双表 - 从这里复制:http://blog.sqlauthority.com/2010/07/20/sql-server-select-from-dual-dual-equivalent/

CREATE TABLE DUAL
(
DUMMY VARCHAR(1)
)
GO
INSERT INTO DUAL (DUMMY)
VALUES ('X')
GO
Run Code Online (Sandbox Code Playgroud)

专门寻找可以使用smth的例子.像查询中的LEVEL一样.例如:表格中只有一个开始日期 - 2013年4月22日.但是使用LEVEL我可以按如下方式增加它:

SELECT start_date, start_date+LEVEL-1 AS start_date_btwn
  FROM my_tab
 WHERE id = 1
CONNECT BY LEVEL<=10
/

START_DATE    START_DATE_BTWN
------------------------------
4/22/2013    4/22/2013
4/22/2013    4/23/2013
4/22/2013    4/24/2013
4/22/2013    4/25/2013
......
4/22/2013    4/30/2013
Run Code Online (Sandbox Code Playgroud)

非常感谢所有人提前.

sql sql-server oracle

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

oracle ×1

sql ×1

sql-server ×1