SQLサーバーの行連結
-
21-08-2019 - |
質問
次の形式の数千 (約 50k) 行を保持するテーブル (実際にはテーブル変数) があります。
group (int) isok (bit) x y
20 0 1 1
20 1 2 1
20 1 3 1
20 0 1 2
20 0 2 1
21 1 1 1
21 0 2 1
21 1 3 1
21 0 1 2
21 1 2 2
そして、これをクライアントに戻すのはかなり大変な作業です (特に isok はビットなので)。私がやりたいのは、これを次の形式に変換することです。
group mask
20 01100
21 10101
そして、これをlongなどにエンコードすることでさらに一歩進めるかもしれません。
注記:データの保存方法は現在変更できません。
このようなことは SQL Server 2005、そして可能であれば 2000 でも可能ですか (非常に重要です)。
編集: 元のテーブルはすでに暗黙的な順序付けになっており、これを維持する必要があることを明確にするのを忘れていました。線形シーケンスとして機能する列は 1 つではなく、順序付けは上記のように他の 2 つの列 (整数) に基づいています (x &y)
解決
ビットを文字列 (「0」、「1」) として扱い、ここで説明する多くの文字列集約連結メソッドの 1 つをデプロイできます。 http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/
所属していません StackOverflow