2016-04-13 4 views
-1

Моя таблица ввода:Динамический SQL-запрос сервера

cd SEQ status 
DGH 1 Outstanding Requirement 
OTH 1 Outstanding Requirement 
OTH 2 O 
OTH 3 O 
OTH 1 Outstanding Requirement 
OTH 2 O 
OTH 3 O 
OTH 4 O 
OTH 5 O 

мне нужен выход, как показано ниже

cd SEQ MyOrder 
DGH 1 DGH-1 
OTH 1 OTH-1 
OTH 2 OTH-1 
OTH 3 OTH-1 
OTH 1 OTH-2 
OTH 2 OTH-2 
OTH 3 OTH-2 
OTH 4 OTH-2 
OTH 5 OTH-2 
+2

Вам нужна еще одна колонка, чтобы установить «порядок» - без нее вы не можете гарантировать порядок результатов. – sgeddes

ответ

2

Как sgeddes упоминалось, что вам нужно еще один столбец, чтобы установить порядок вы хотите. Я собираюсь предположить, что у вас есть столбец ID, как это:

id cd SEQ 
1 DGH 1 
2 OTH 1 
3 OTH 2 
4 OTH 3 
5 OTH 1 
6 OTH 2 
7 OTH 3 
8 OTH 4 
9 OTH 5 

Учитывая это, вы можете использовать окно функции для достижения того, что вы хотите. Обратите внимание, что я предполагаю, что ваша таблица называется «элементами» ниже.

SELECT cd, 
    SEQ, 
    DENSE_RANK() OVER (PARTITION BY items_grpd.cd ORDER BY items_grpd.grp) AS MyOrder 
FROM 
(
    SELECT id, 
     cd, 
     SEQ, 
     ROW_NUMBER() OVER(PARTITION BY cd ORDER BY id) - SEQ AS grp 
    FROM items 
) AS items_grpd 
ORDER BY items_grpd.id; 
+0

Спасибо .. Сработала – Uday

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