最初の最小レコードと2番目の最小値を取得する必要があるため、テーブル1とテーブル2を2回結合したいとします。しかし、私は2番目の最小レコードを取得するためにcteを使うことしか考えていません。それを行うより良い方法はありますか?ここでSQL MinとSec Minの行を持つテーブルを結合する
は、テーブルのテーブルです:
私は、その出力値が出力値Iが使用しています0
現在のコードである1と第2 RUNIDで出力テーブルFirstRunIDでメンバーに参加したいです:
select memid, a.runid as aRunid,b.runid as bRunid
into #temp
from FirstTable m inner join
(select min(RunID), MemID [SecondTable] where ouput=1 group by memid)a on m.memid=a.memid
inner join (select RunID, MemID [SecondTable] where ouput=0)b on m.memid=a.memid and b.runid>a.runid
with cte as
(
select row_number() over(partition by memid, arunid order by brunid),* from #temp
)
select * from cte where n=1
ご希望の出力は、私には意味がありません。 'Memid = 2'の場合、' output = 1' **の最初の 'RunID'は** ** **ではなく1 **です。これは単なる例であり、他にもあります。あなたの構造とデータのSQLフィドルを追加して、適切に再吟味するか、目的の出力を修正してください。 –
ありがとうございます。私は欲望の出力を修正しました。 – keivn