IDの範囲を表す2つの列を含むSQLテーブルがあります。これらの範囲は、2番目のテーブルの特定のID列の下にあるセルと比較する必要があります。範囲内にある場合は、2番目のテーブルの行が戻り値に含まれます。
編集:利用可能な範囲は、ユーザーが指定した日付の範囲によって制限されます。
私はSQLの基本に精通しているだけです。ループと事前定義された表形式の関数の調査を開始する前に、誰か提案がありますか?
SELECT * FROM [ADataBase].[dbo].[AFirstTable]
WHERE [ALongIDNumber] <=
(SELECT [StartOfIDRange] FROM [DHL].[dbo].[ASecondTable]
WHERE [date] BETWEEN '2010-01-21' AND '2010-01-22')
AND [ALongIDNumber] >=
(SELECT [EndOfIDRange] FROM [DHL].[dbo].[ASecondTable]
WHERE [date] BETWEEN '2010-01-21' AND '2010-01-22')
現在、これは
Msg 512, Level 16, State 1, Line 2
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
、selectによって返される行がいくつかあるため、フラッフを引き起こしていると私が推測しているエラーを返します。
私は調査しましたが、同じような質問に出くわしましたが、その答えは固定数の範囲に対するものだけです。テーブルに範囲を照会するため、範囲の数が変わります。
このシナリオの性質上、データベースの変更は最後の手段です。
ご協力いただきありがとうございます!