請幫助Oracle查詢轉換爲SQL Server的等價物:SQL服務器等同於甲骨文的CONNECT BY和水平虛列
SELECT (LEVEL+1-1) AS lvl
FROM dual
CONNECT BY LEVEL <= 10
/
輸出爲數字1到10:
LVL
----
1
2
3
...
10
我知道有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
專找例子,將讓使用不便。像查詢中的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
非常感謝您提前給所有人。我已經在過去做了
是否有你需要數字的最大數量? – sgeddes 2013-02-22 19:37:06
@sgeddes - 不,在Oracle中可以有任何數字而不是10,如我的例子。爲了簡化,我將示例限制爲10。謝謝。 – Art 2013-02-22 19:38:29
@Martin - 謝謝。這有幫助。 – Art 2013-02-22 20:09:48