0

次のように左外部結合を使用したい:

    SELECT ...
FROM Table1
LEFT OUTER JOIN
(SELECT only e.g. 3rd record... , SomeField FROM Table2) tbl2
  ON Table1.SomeField = tbl2.SomeField

サブクエリで Table2 の 3 番目のレコードだけでなく、SomeField = Table1.SomeField を持つ Table2 レコードの 3 番目のレコードを選択する必要がある場合、どうすればよいですか? ありがとう。

4

1 に答える 1

0

これがSQLServer2005以降の場合は、row_number()を使用できます。

LEFT JOIN
(
   select *
     from
     (
       select *,
              row_number() over (order by something) rn
         from Table2
        where Table2.Column = Table1.Column
     ) a
    where a.rn = 3
) a

残念ながら、条件でrow_numberを直接使用することはできないため、レベルを深くネストする必要があります。

編集:

私の悪い-私は実際に参加部分に気づいていませんでした。派生テーブルを結合する場合は、次を使用します。

LEFT JOIN
(
   select *,
          row_number() over (partition by SomeField order by something) rn
     from Table2
) tbl2
  ON Table1.SomeField = tbl2.SomeField
 AND tbl2.rn = 3

注:一貫性を保つには、row_number()にORDERBYが必要です。

于 2012-04-18T12:48:10.140 に答える