sql >> データベース >  >> RDS >> Sqlserver

重複する範囲によってテーブルが関連付けられている相関サブクエリへのSQL結合

    CTEを利用してこれを行うことができます およびrow_number()

    SQLフィドルデモ

    ;with cte as 
    (
        SELECT *,
            ROW_NUMBER() OVER (PARTITION BY i.id ORDER BY e.EventDate DESC) as rNum
        FROM Item i
        JOIN Event e
            ON i.id between e.ItemStart and e.ItemEnd
    )
    
    SELECT ID,
      Name, 
      EventType,
      EventDate FROM cte
    WHERE rNum = 1
    

    基本的に、CTEはアイテムとイベントを結合し、行番号の新しい列を追加し、item.IDでパーティション化されています。これがどのように見えるかのスクリーンショットです。ここから、各item.idの最大イベント日付となるrNum=1を選択します。



    1. 列をnullにすることはできませんMysql

    2. PHPでの最後のクエリの実際の(絶対)実行時間を取得する(ネットワーク遅延などを除く)

    3. MySQLからPostgreSQLへの切り替え-ヒント、コツ、落とし穴?

    4. JPAペシミスティックロックが機能しない