2013-08-12 5 views
-2

Я использую SQL Server 2008, я должен заказать следующие данные:Сортировка данных в зависимости от конкретного значения столбца

Id  PId  Name 
1  1  A 
1  2  G --value to consider 
1  3  C 
2  1  A 
2  2  B --value to consider 
2  3  C 
3  1  A 
3  2  D --value to consider 
3  3  C 

результат должен выглядеть примерно так:

Id  PId  Name 
2  1  A 
2  2  B 
2  3  C 
3  1  A 
3  2  D 
3  3  C 
1  1  A 
1  2  G 
1  3  C 

я попробовали разные комбинации в порядке, но без использования:

order by Name, PId 
order by PId, Name, Id 
+2

Можете ли вы описать словами, как вы бы как его заказать? Почему вы хотите, чтобы 'Id' был заказан 2, 3, 1? –

+0

_Why_ это значение для рассмотрения? Потому что PId = 2? –

+0

Какова модель заказа? В первом столбце почему 2 до 3? пожалуйста, объясни. – sarwar026

ответ

2
select T1.* 
from Table1 as t1 
    left outer join Table1 as T2 on T2.id = T1.id and T2.Pid = 2 
order by T2.Name, T1.Pid 

sql fiddle demo

2

Ваш вопрос непонятен в отношении заказ вы хотите, но если вы хотите сделать заказ по имени, связанного с тем же идентификатором для Pid = 2, то по Pid, ​​попробуйте

select Id, PId, Name 
from t 
order by (
    select Name from t as t2 
    where t2.Id = t.Id 
    and t2.PId = 2 
), PId 
Смежные вопросы