2016-10-27 126 views
1

分配一個2行唯一的ID,我想我的措辭標題笨拙一點,但這裏是我的問題:SQL:每2行的數據

我有一個Sybase表像之下,每一個2行需要有一個unique ID它與表中的每隔兩行分開。因此第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

一招取除以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

在美國英語中,這句話將是「吶喊,它是」:-) –