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

SQL Server 2008 R2 - アイランドとギャップ

    このようなものは、SQL Fiddle の仕事をするはずです。

    SIGN の値が同じシーケンシャル データの島を見つけます。 Itzik Ben Gan の行番号手法を使用して同じグループ化値を割り当ててから、それらをグループ化して集計します。 CROSS APPLY ... VALUES MIN のピボットを解除します と MAX

    ;WITH T1
         AS (SELECT *,
                    ROW_NUMBER() OVER (PARTITION BY SIGN(PctGain) 
                                           ORDER BY WSeqKey) - WSeqKey AS Grp
             FROM   YourTable),
         T2
         AS (SELECT MIN(WSeqKey)  AS BeginSeq,
                    MAX(WSeqKey)  AS EndSeq,
                    SIGN(PctGain) AS Sign
             FROM   T1
             GROUP  BY Grp,
                       SIGN(PctGain))
    SELECT CASE Sign
             WHEN -1 THEN 'Negative'
             WHEN 0 THEN 'Equal'
             WHEN 1 THEN 'Positive'
           END AS [Sign],
           Descriptor,
           SeqKey
    FROM   T2
           CROSS APPLY (VALUES('Begin', BeginSeq),
                              ('End',   EndSeq)) V(Descriptor, SeqKey)
    ORDER  BY SeqKey 
      

    1. Postgres関数は作成されますが、実行されません

    2. 完全なMySQLデータベースレプリケーション?アイデア?人々は何をしますか?

    3. PHP-別のサーバーからmysqlデータベースに接続する

    4. codeigniternodejsとnowjsの統合