2016-05-16 2 views
0

мои данные, как это -Вычислить ранг шаблон без стоимости заказа

enter image description here

Вы можете проверить 3 колонки, jil_equipment_id, req_group, операнд. На основе этих 3 столбцов мне нужно сгенерировать новый «Patern« Колонка.

Столбец-патерн является отцом и начинается с 2 и увеличивается на 1 для каждой повторной комбинации jil_equipment_id, req_group, операнд.

Окончательные данные будут выглядеть следующим образом. enter image description here

Просьба предложить мне любой возможный подход. Я не могу использовать функцию RANK()/DENSE_RANK().

+1

Я удалил посторонние теги базы данных. Добавьте тег для используемой базы данных. Также объясните, почему вы не можете использовать функции ранжирования. –

+0

Я использую SQL Server –

+0

Невозможно использовать функции Rank coz, они работают с значениями ASC/DESC, My pattern основан на 3 разных столбцах. –

ответ

0
select *,Row_Number() over(partition by jil_equipment_id,req_group,operand order by jil_equipment_id,req_group,operand) + 1 as pattern 
from tab 

вы можете использовать row_number() функция для этого.

+0

Dosn't работать. jil_equipment_id, req_group, операнд не находится в каком-либо порядке ASC/DESC. Это похоже на каждый jil_equipment_id, мы должны проверять каждую группу req_group для нескольких операндов и создавать шаблон соответственно. Если для каждого jil_equipment_id существует более двух операндов, req_group должно увеличиться на 1, иначе осталось 2 –

+0

использовать раздел также –

1

Вы можете использовать row_number(). Вы также хотите использовать partition by:

select t.*, 
     (1 + row_number() over (partition by jil_equipment_id, req_group, operand 
           order by content_id 
          ) 
     ) as pattern 
from t; 
+0

Спасибо, он сработал. PS - Как глупо я теперь не вижу столбец content_id –

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