私は浄化する必要があるユーザーデータを継承しました。もともとMS Accessデータベースにあったので、SQL Serverに変換する必要があります。私は今SQL Serverでテーブルを持っていますが、そこには私が助けが必要なデータの列があります。ビット単位のデータを複数の列に変換する
名前、電子メールなどの列がいくつかあり、すべて簡単です。
ただし、ビット単位のデータが格納される1つの列があります。この列は、ユーザーが所属できるグループを表示します。私はあることをこれらのグループとそれに関連する数を決定しているレコードの数を経て:
All 1
Air 2
Plants 4
Energy 8
Land 16
Elec 32
Fire 64
Water 128
Cloud 256
Soil 512
Waste 1024
Local 2048
Coast 4096
ユーザー列のデータは、彼らが航空グループに属する2可能性があり、またはそれは6かもしれません彼らが空気と植物の両方に属しているとき(2 + 4)。
ユーザーIDフィールドを含むテーブルを作成しました。
User_ID Name Group
1 Jo Smith 2
2 Carl White 8
I:
User_ID
All
Air
Plants
Energy
Land
Elec
Fire
Water
Cloud
Soil
Waste
Local
Coast
は、だから私は古いテーブルを反復処理し、データがある場合は、その後、それに応じて
このように新しいテーブルの列に対応する真の値を挿入する必要があります最終的には
User_ID All Air Plants Energy ....
1 true
2 true
などとなります。ユーザーが複数のグループに属することができるので、
はしかし、データがより次のようになります。
Jake C 1552
Jeff H 1556
Cath B 1561
Emma B 1564
Alex G 1572
Alan H 1574
Jo L 1596
Roy A 1600
は、どのように私は私の新しいテーブルを構築については行くのですか?
SELECT * FROM [dbo].[Users] where [Group] & 2 != 0
私が必要とする行に沿ってデータを取り戻すようになると思っていましたが、正しいトラックであるかどうかわかりません。
編集:それは必要なものであれば、私は外部コードを使用することに開いています - 必ずしもSQLコマンドで実行する必要はありません/
ワウ。ありがとうございました! –
選択したグループの数を含む列を追加することは可能ですか?したがって、CarlがAirとPlantsを持っていれば、数は2になりますか? –
@MhluziBhaka、編集終了の下を参照 –