2016-06-08 2 views
0

новичок вопрос здесь. Как я могу сортировать таблицу сотрудников по LEN (Firstname) Desc, а затем по lastName asc?Progress OpenEdge как сортировать по длине char

Вот код, который я до сих пор:

output to /usr2/appsrv/test/Test.txt. 
def var dRow as char. 
for each emp by emp.FirstName no-lock: 
    dRow = substitute ("&1,&2", emp.FirstName, emp.LastName). 
    put unformatted dRow skip. 
end. 
put unformatted dRow skip. 
output close. 

Я по версии 11.3.3

Спасибо

+0

Какая длина связана с этим? Вы упоминаете это в названии, но не в теле. Я смущен. –

+0

oops sorry Я хотел сказать Lentht firstname DESC. Исходная запись изменена. спасибо – BobNoobGuy

ответ

2
for each emp by length(emp.firstName) descending by lastName: 
    display emp.firstName emp.lastName. 
end. 

Performance будет вонять, если это большой стол.

+0

Если это то, что нужно делать часто, и на большом количестве записей вам лучше добавить поле, содержащее длину первого имени и порядок вместо него. Помните, что при обновлении имени его необходимо обновить. – Jensd

0
for each emp no-lock by emp.FirstName desc by emp.LastName : 
+0

извините, я допустил ошибку в вопросе. Я имел в виду сортировку по len (firstname) desc then by lastname – BobNoobGuy

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