7

Oracle クエリを SQL Server の同等のクエリに変換するのを手伝ってください:

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

具体的には、smth を使用できる例を探しています。クエリの LEVEL のように。例: テーブルには 1 つの開始日 (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

よろしくお願いします。

4

1 に答える 1

16

私が過去にそれを行った1つの方法は、次のspt_valuesようにクエリを実行することです。

SELECT number
FROM master..spt_values
WHERE 
    type = 'P'
    AND number <= 255

ただし、番号の完全なリストはありません。別のオプションは、次のような再帰CTEを作成することです。

WITH CTE AS (
  SELECT 1 as Number
  UNION ALL
  SELECT Number+1
  FROM CTE 
  WHERE Number < 100 
)
SELECT * FROM CTE

SQLフィドルデモ

于 2013-02-22T19:45:33.057 に答える