tblAが以下のようにあったとします。
|コード|詳細コード|名前|ペアid|
|:--|:--:|--:|
|1|1-1|aaa|2|
|1|1-2|bbb|2|
|1|1-3|ccc|2|
|1|1-4|ddd|1|
|1|1-5|eee|2|
|2|2-1|fff|2|
これを以下のようにソートしたいです。
|コード|詳細コード|名前|ペアid|
|:--|:--:|--:|
|1|1-1|aaa|2|
|1|1-2|bbb|2|
|1|1-3|ccc|2|
|1|1-5|eee|2|
|2|2-1|fff|2|
|1|1-4|ddd|1|
「ORDER BY コード,詳細コード」が基本で、「ペアid」が同じものはその下につなげるといった形です。
調べました感じ一番近いのが、「ROW_NUMBER() over(PARTITION ペアid order by コード,詳細コード)」で
|コード|詳細コード|名前|ペアid|ROW|
|:--|:--:|--:|
|1|1-1|aaa|2|1|
|1|1-2|bbb|2|2|
|1|1-3|ccc|2|3|
|1|1-4|ddd|1|1|
|1|1-5|eee|2|4|
|2|2-1|fff|2|5|
になるかと思いますが、これを
|コード|詳細コード|名前|ペアid|ROW|
|:--|:--:|--:|
|1|1-1|aaa|2|1|
|1|1-2|bbb|2|1|
|1|1-3|ccc|2|1|
|1|1-4|ddd|1|2|
|1|1-5|eee|2|1|
|2|2-1|fff|2|1|
のように出来れば解決できるかと思いました。
(order by ROWで解決)
SQL Serverを用いておりますが、UI側のvb.netでの処理でも構いません。
また、実際には様々な結合の結果持ってきたtblAですので、自身を結合するといった処理は重くなるので現実的ではありません。
DENSE_RANK() over (order by ペアid)も近いのですが、
|コード|詳細コード|名前|ペアid|DENSE|
|:--|:--:|--:|
|1|1-1|aaa|2|2|
|1|1-2|bbb|2|2|
|1|1-3|ccc|2|2|
|1|1-4|ddd|1|1|
|1|1-5|eee|2|2|
|2|2-1|fff|2|2|
の様になり、このテーブル上ならDESCで良いのですが、実際には量も多いのでできません。
order by コード,詳細コードで並べた間に同ペアidを挿入といった感じです。
また、ペアidの実際の値は外からはわからないです。(case 2 thenのようにはできない)
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー