ABだけを見たいこのテーブルがあります
ID CODE COUNT
102 AB 9
101 AB 8
100 AC 23 //not important!!!!
99 AB 7
98 AB 6
97 AB 5
96 AB 0
これに会話
ID NEWID CODE COUNT
102 102 AB 9
101 101 AB 8
99 100 AB 7
98 99 AB 6
97 98 AB 5
96 97 AB 0
このクエリの使用:
SELECT t.ID, @NEWID := COALESCE(@NEWID - 1, t.ID) AS NEWID, t.CODE, t.COUNT
FROM
(SELECT ID, CODE, COUNT FROM some_table WHERE CODE = 'AB' ORDER BY ID DESC) t,
(SELECT @NEWID := NULL) _uv;
http://sqlfiddle.com/#!2/e0b8b/1/0
そして今、私はそれぞれの連続するNEWIDの差を数えたいと思います。
それで
Step 1: 9 - 8 = 1
Step 2: 8 - 7 = 1
Step 3: 7 - 6 = 1
Step 4: 6 - 5 = 1
Step 5: 5 - 0 = 5
私はこれを行うことに慣れています
LEFT OUTER JOIN some_table t2 ON t.ID = ( t2.ID + 1 )
次に、t2.countとt.countの違いを調べますが、COALESCEを使用している場合、このNEWIDを選択できないため、以下のコードは機能しません。
LEFT OUTER JOIN some_table t2 ON t.NEWID = ( t2.NEWID + 1 )
では、この問題をどのように解決する必要がありますか?