2016-10-27 3 views
1

Я думаю, что сформулированное название немного неловко, но вот мой вопрос:SQL: Назначение 2 строки уникального идентификатора для каждых 2 строк данных

У меня есть Sybase таблицу, как показано ниже, где каждая 2 строки необходимо иметь a unique ID, который отделен от всех остальных 2 строк таблицы. Поэтому для строк 1 и 2 нужен ID, который отличается от строк 3 и 4 и остальной части таблицы. Символ может повторяться. Всегда есть «B» и «S», привязанные друг к другу, но нет текущего идентификатора для их соединения. 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

В американском английском высказывание было бы «кричать, вот оно» :-) –

Смежные вопросы