1

私のデータセットには、「最も近い一致」が必要な別のテーブルからの別の同じサイズの値のセットに一致する一連の数値があります。

Left   Right
A      M
B      N
C      O
D      P

したがって、目標は、左から右に結合し、結果の行として AM を与えることです。ここで、A < M および M - A は最小 [M..P - A] です。

(A..D と M..P には、同じ値を持つ複数の要素がある可能性があることを無視してください。)

編集: 同様に、B は N、C は O、D は P に一致する必要があります。

E..G が Q..S に一致するように、テーブルにはそのような値の複数のセットがありますが、これらは表示されていない他のフィールドの別のグループになります。

これらの「セット」の一致が多数存在する可能性があります (テーブル内の他のフィールドに基づく.

提案やアイデア?T-SQL または基本的な SQL で推奨されます。

4

3 に答える 3

0

これはあなたが望むことをしますか?

select l.*,
       (select max(r.right)
        from right r
        where r.right <= l.left
       ) as RightMatch
from left l;

注: これは SQL の単なるスケッチです。 leftandrightは (明らかに) 予約語です。クエリの命名規則に一致させるためにそれらを使用しているだけです。列名またはテーブル名に予約語を使用しないでください。

于 2014-06-19T15:37:49.093 に答える