2017-09-21 5 views
0

に行を変換しますSQL Serverの手順:サブストリングと私はSQLに新たなんだと、私は次のタスクを達成する必要が列

表1

| Nr | Binary   | 
--------------------------- 
| 1 | 111111111011010 | 
| 2 | 111111111011110 | 
| 3 |  ...  | 

表2:

を私は2つのテーブルを持って

| Nr | 
-------- 
| 1 | 
| 1 | 
| 1 | 
| 1 | 
| 1 | 
| 2 | 
| 2 | 
| 2 | 
| 3 | 
| ... | 

テーブル2を変更(または新しいテーブルを作成)したいので、次のようになります。

| Nr | Binary | 
----------------- 
| 1 | 0 | 
| 1 | 1 | 
| 1 | 0 | 
| 1 | 1 | 
| 1 | 1 | 
| 2 | 0 | 
| 2 | 1 | 
| 2 | 1 | 
| ... | ... | 

説明:

表2は、コラム「NR」で4回「1」がある - >表1のコラム「バイナリ」行「1」の最後の4桁をサブストリングと、それが挿入行方向表2列Nrも "Nr"である2進列1

表2は、 "Nr"列の "2" - >サブストリングTable1列 "Binary"行 "2"の最後の3桁の3倍の行を挿入します。表2の列バイナリ "Nr"も1

提案はありますか?前もって感謝します!

答えて

1

添付のコードをご覧ください。私は数字12のみを使用しますが、それは一般的に動作します:)

declare @table1 table (nr int, [binary] varchar(30)) 
insert into @table1 values (1, '111111111011010'), (2, '111111111011110') 

declare @table2 table (nr int) 
insert into @table2 values (1),(1),(1),(1),(1),(2),(2),(2) 

select A.nr, 
     SUBSTRING(B.[binary], LEN(B.[binary]) - A.rownum + 1, 1) AS [bit] 
from (select rownum = row_number() over(partition by nr order by nr), nr from @table2) AS A 
join @table1 AS B on A.nr = B.nr 
+0

私の結果は次のようになります。https://pasteboard.co/GLnjW2T.png(2列目のゼロのみ) –

+0

次に、 「Binary」列にゼロがあります。 –

+0

それは私の間違いだった...別の2つの質問:Table2はいくつかの列を持って、どのように私もそれらを挿入できますか?なぜ注文が間違っていますか? (1,10,14 ...) –

関連する問題