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

列に特定の値が含まれている場合に次の行に移動する (SQL Server 2008)

    データが正しいかどうかを判断する比較的効率的な方法があります。データに欠落している「1」または「2」があるかどうかを判断します。このバージョンでは、最初の ID が「1」であるかどうかを判断しません。これは、質問で言及されていないためです。

    最善の解決策は lag() を使用することです および lead() .ただし、SQL Server 2008 はこれらの関数をサポートしていません。では、これをギャップと島として考えてみましょう。特定の id に対して連続して複数の「1」または「2」がある状況はありますか? ?次のコードは、これらの異常を検出する必要があります:

    select id, inoutid, count(*) as num_in_row,
    from (select t.*,
                 row_umber() over (partition by id, inoutid order by date, hours, minute) as seqnum_ii,
                 row_umber() over (partition by id order by date, hours, minute) as seqnum_i
          from t
         ) t
    group by id, inoutid, (seqnum_i - seqnum_ii)
    having count(*) > 1
    



    1. SQLで二重バー(||)はどういう意味ですか?

    2. PHP / MySQL:UUIDの保存と取得

    3. Mysqlで重複以上を検索し、最初の入力を除いてそれらを削除します

    4. MySQLユニコードリテラル