2016-10-27 5 views
1

のすべての2行の2行のユニークなIDを割り当てる私は少しぎこちなくタイトルを言葉で表現だと思うが、ここに私の問題です:SQL:データ

私はすべての2行が持っている必要がある場合、以下のようなSybaseのテーブルを持っていますunique IDは、表の他の2つの行とは別です。したがって、行1と2は、行3と4および表の残りの部分と異なるIDを必要とします。 「シンボル」は繰り返すことができます。 「B」とお互いに結びつい「S」が、それらを接続するためには電流IDは常にあります。 ExecIDとOrderIDは必ずしも真の順序(すなわち、010001、010002)ではありませんが、順番に並んでいます。私はCASE WHENのいくつかのバリエーションを試してみたが、私は、トリックを行うだろう何も考えることはできません。

これを行うにはどのような方法が最適ですか?出力の

Symbol | Sell-Buy | ExecId | OrderId | RowNum | 
--------------------------------------------------- 
W  | B  | 64240624 | 101773407 | 1  | 
W  | S  | 64240625 | 101773408 | 2  | 
XM  | B  | 64240626 | 101773409 | 3  | 
XM  | S  | 64240627 | 101773410 | 4  | 
GV  | B  | 64240628 | 101773411 | 5  | 
GV  | S  | 64240629 | 101773412 | 6  | 

.... 

W  | B  | 64240679 | 101773455 | 49  | 
W  | S  | 64240680 | 101773456 | 50  | 

目標:あなたは次のようになり、ここで使用することができます

Symbol | Sell-Buy | ExecId | OrderId | RowNum | 2RowId | 
------------------------------------------------------------ 
W  | B  | 64240624 | 101773407 | 1  | 000001 | 
W  | S  | 64240625 | 101773408 | 2  | 000001 | 
XM  | B  | 64240626 | 101773409 | 3  | 000002 | 
XM  | S  | 64240627 | 101773410 | 4  | 000002 | 

.... 

W  | B  | 64240679 | 101773455 | 49  | 000025 | 
W  | S  | 64240680 | 101773456 | 50  | 000025 | 

答えて

1

1つのトリックは、2で割った現在の行番号の天井取るために:ここで

UPDATE yourTable 
SET 2RowId = CEILING(RowNum/2) 

があります数学がうまく方法を示す表:

RowNum | RowNum/2 | ceiling(RowNum/2) 
1  | 0.5  | 1 
2  | 1  | 1 
3  | 1.5  | 2 
4  | 2  | 2 
... | ...  | ... 
+0

うん、そこにある!ありがとう!私はポストが私にできるときに正しい答えをマークします。 – plankton

+1

アメリカの英語では、「whoop、there is it」と言っています:-) –