私はA.という名前のテーブルを持っています。フィールドには1つのレコードしかありません。これはnumberという名前の整数です。 A.numberレコードを持つビューを作成したいとします。それぞれ、A.numberより小さい数字の1つです。例えば整数のビューを作成しますか?
:
選択A.number -----> 5
図5のレコード0 1 2 3 4
PSを示すべきである:これは本当の問題は、Iそれを多く簡略化した。実際の問題は、固定期間内の予算を毎日に分割することです。
私はA.という名前のテーブルを持っています。フィールドには1つのレコードしかありません。これはnumberという名前の整数です。 A.numberレコードを持つビューを作成したいとします。それぞれ、A.numberより小さい数字の1つです。例えば整数のビューを作成しますか?
:
選択A.number -----> 5
図5のレコード0 1 2 3 4
PSを示すべきである:これは本当の問題は、Iそれを多く簡略化した。実際の問題は、固定期間内の予算を毎日に分割することです。
これは宿題かもしれないように聞こえるので、コードを完全に提供することには慎重です。
私は質問を解決するためのポインタを与えることができます。各反復が前の反復に1を追加する再帰CTEを使用します。ちょうどあなたが数字をチェックすることがあります場合は> 101あなたは、元のテーブルにビューをキーにスカラサブクエリを使用することができますMAXRECURSIONオプションを設定してください:
WITH numbers (n) AS (
SELECT 0 UNION ALL
SELECT 1 + n FROM numbers WHERE n < (select number from a) -1)
SELECT n FROM numbers
OPTION (MAXRECURSION 500) --example
もしあなたのテーブルの数2048 <になるとは、SQL Server上にあるだろう、これはあなたのために動作します:
あなたは上限を必要とする、またはしている場合は、アプリケーションに合わせて適切なサイズを使用して独自の番号表を作成することを検討可能性が代わりCREATE VIEW MyView AS
SELECT number
FROM master..spt_values
WHERE type = 'p'
AND number < (SELECT value FROM yourTable)
これがあなたに提供されているSQL Server上ではありません。 Hereは、「Numbersテーブル」を便利にするという考えに対するブログ記事へのリンクです。
この宿題はどこかのパズルですか? –
どれもありません。本当の問題。主な問題はより複雑です。私はそれを単純化しました。 – Masoud