2014-01-15 3 views
0

Я имею таблицу со столбцамиСортировка данных в хранимой процедуре с собственным порядке предпочтения

[ID] AS bigint 
[CompanyID] AS bigint 
[Name] AS nvarchar(50) 
[Position] AS nvarchar(15) 

И позиция постоянна в выпадающем списке, значения президент, вице-президент, секретарь и так далее. Мне нужно сортировать данные, поскольку первый является вторым президентом, является вице-президентом ......

ответ

0
order by ID 

возможно?

Если у вас нет другого столбца данных, который может быть использован для вашего запроса order by. Это звучит довольно специфично, поэтому вам нужно что-то в данных, которые вы можете использовать для их заказа.

+0

спасибо, у меня есть решение. SELECT [ID], [LabourFederationID], [Имя], [AdministrativeCapacity] ОТ [DBO]. [APP_Member] ГДЕ ([LabourFederationID] = 1 ИЛИ 1 IS NULL) ORDER BY (CASE [AdministrativeCapacity] \t КОГДА 'Президент' \t Тогда 1 когда 'вице-президента' \t ТОГДА 2 кОГДА 'секретарь' \t ТОГДА 3 кОГДА 'кассир' THEN 4 кОГДА 'помощник кассира' \t ТОГДА 5 ELSE 100 END) ASC, [Имя] ASC – Mohammed

+0

Да, это сработает, но что произойдет, когда вы добавите еще одну запись? вам нужно изменить свой код. Вы должны добавить столбец «OrderBy» в свою таблицу, чтобы вы могли заказать это. –

0

Проверьте это. Используйте случай, когда его достичь.

Create table #Employee(
ID bigint, 
Name nvarchar(50), 
Position nvarchar(15) 
) 

insert into #Employee values (031,'AAA','Secretary') 
insert into #Employee values(781,'ZZZ','Secretary') 
insert into #Employee values(166,'PPP','President') 
insert into #Employee values(561,'BBB','Vice President') 
insert into #Employee values(441,'KKK','Secretary') 
insert into #Employee values(124,'DDD','Secretary') 
insert into #Employee values(100,'ZZZ','Vice President') 

select *,CASE 
WHEN Position='President' THEN 1 
WHEN Position='Vice President' THEN 2 
WHEN Position='Secretary' THEN 3 
END AS [PositionOrder] from #Employee 
order by [PositionOrder] 

drop table #Employee 
Смежные вопросы