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

SQL-ほとんど順序付けられた順次系列で欠落しているint値を検索します

    私はそこに行ったことがあります。

    FOR ORACLE:

    これは非常に便利です 少し前にネットでクエリして書き留めましたが、今はサイトを覚えていません。 "GAP ANALYSIS"を検索してください。 Googleで。

    SELECT   CASE
                 WHEN ids + 1 = lead_no - 1 THEN TO_CHAR (ids +1)
              ELSE TO_CHAR (ids + 1) || '-' || TO_CHAR (lead_no - 1)
             END
                 Missing_track_no
       FROM   (SELECT   ids,
                        LEAD (ids, 1, NULL)
                         OVER (ORDER BY ids ASC)
                            lead_no
                 FROM   YOURTABLE
                 )
       WHERE   lead_no != ids + 1
    

    ここで、結果は次のとおりです:

    MISSING _TRACK_NO
    -----------------
           6
    

    複数のギャップがある場合、たとえば2,6,7,9の場合、次のようになります。

    MISSING _TRACK_NO
    -----------------
            2
           6-7
            9
    


    1. SQLでのピボット演算子の理解

    2. アセットフォルダからデータベースを読み取る

    3. インラインvarchar(max)列を使用する必要がありますか、それとも別のテーブルに保存する必要がありますか?

    4. SQLServer2012のパフォーマンス関連の修正