0

次の表があります。

ID        Revision
1          A.1
1          A.2
1          A.4
1          A
1          B.1
1          B
1          C
1          D.1

以下を返すクエリを書きたいと思います。

ID        Revision     Version
1          A.1          A.1
1          A.2          A.2
1          A.4          A.4
1          A            A.5
1          B.1          B.1
1          B            B.2
1          C            C.1
1          D.1          D.1

助けを求めています。私の問題は、バージョンを以前のリビジョンに 1 を加えたものにする必要があることです。

お知らせ下さい。

4

2 に答える 2

0
SELECT ID
    ,Revision
    ,Version = LEFT(Revision, 1)+'.'
        +CAST(ROW_NUMBER() OVER (PARTITION BY ID, LEFT(Revision,1) ORDER BY ID, LEFT(Revision, 1), LEN(Revision) DESC, Revision) AS VARCHAR)
FROM @tbl 
ORDER BY ID, LEFT(Revision, 1), LEN(Revision) DESC, Revision

バージョン番号がA.3をスキップしないことを除いて、それはあなたが提供した結果セットを生成します

ORDER BY が非常に厄介な理由は、番号のないリビジョンが常に最後に表示されるようにするためです。

于 2013-11-07T16:26:13.937 に答える