![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Переменное правило сортировки. Возможно ли это? [D6]
alex-ran © (2005-09-15 16:43:00)Уважаемые мастера. Возникла необходимость сортировать Набор Данных с переменным условием сортировки, допустим если первое поле нечетное (либо какое другое условие) - то второе поле по возрастанию, и первое четное - второе по убыванию и т. д., Например:
Есть: Надо получить:
№ Длина № Длина
1 500 1 500
1 1600 1 1600
2 700 2 1400
2 1400 2 700
3 600 3 200
3 200 3 600
Можно ли такое сделать средствами SQL?
Пока что приходится делать руками.
С уважением, Александр.
Johnmen (2005-09-16 09:40:00) [1]Всё понятно. Тип целочисленный.
И всё приводится к нему, дробная отбрасывается...
Reindeer Moss Eater (2005-09-16 09:30:00) [2]Продукт:
Delphi7
Приложение:
SQL explorer
База данных
DBDEMOS
Таблица:
employee.db
Запрос:
select empno - (2 * (empno / 2)) from employee
Выборка:
0
0
1
0
1
1
...
Johnmen (2005-09-16 09:17:00) [3]>Reindeer Moss Eater © (15.09.05 23:15) [17]
>Получаем:
>1,1
>2,0
>3,1
>4,0
>5,1
>Проверено электроникой.
Какой именно электроникой ? Подробно.
Fedia (2005-09-16 00:10:00) [4]Твоя правда. Просто странно это...
У меня было поле Number.
Reindeer Moss Eater (2005-09-15 23:48:00) [5]Федя, у тебя тип поля какой?
Fedia (2005-09-15 23:41:00) [6]Предположил, что твой результат, это глюк, возникающий про работе с Paradox. Проверил. Получается:
1,0
2,0
3,0
4,0
5,0
как и должно быть.
Reindeer Moss Eater (2005-09-15 23:15:00) [7]create table test(num integer)
insert into test values(1)
insert into test values(2)
insert into test values(3)
insert into test values(4)
insert into test values(5)
select num, num - (2 * (num / 2)) from test
Получаем:
1,1
2,0
3,1
4,0
5,1
Проверено электроникой.
Fedia (2005-09-15 23:12:00) [8]Reindeer Moss Eater © (15.09.05 23:00) [15]
>Да так. Результат <целочисленное поле> / 2 будет целочисленным.
Ты не путаешь понятие "целочисленное" и "четное" ?
Reindeer Moss Eater (2005-09-15 23:00:00) [9]>Ну если поле целочисленное, то деление на два и так будет целочисленным
Это как это ???
Да так. Результат <целочисленное поле> / 2 будет целочисленным.
Johnmen (2005-09-15 21:25:00) [10]>Ну если поле целочисленное, то деление на два и так будет целочисленным
Это как это ???
>И каст к интегеру не нужен.
По-моему ((num - 2 * (num / 2)) - 0.5) всегда = -0.5
Или нет ?
Reindeer Moss Eater (2005-09-15 20:28:00) [11]Ну если поле целочисленное, то деление на два и так будет целочисленным.
И каст к интегеру не нужен.
Johnmen (2005-09-15 20:23:00) [12]>Reindeer Moss Eater © (15.09.05 19:32) [11]
Поправочка (для Paradox7)
SELECT F1,
(CAST(0.5-(CAST(F1/2 AS INTEGER)-F1/2) AS INTEGER)-1)*F2,
F2
FROM Table
ORDER BY 1,2
Reindeer Moss Eater (2005-09-15 19:32:00) [13]Если поле num целочисленное, то :
select num,((num - 2 * (num / 2)) - 0.5) * len, len from test
order by 1,2
Если дробное, то чуть сложнее.
alex-ran (2005-09-15 18:11:00) [14]Если получится, просьба поделиться ноу-хау.
Будем-с ждать. :)
Reindeer Moss Eater (2005-09-15 18:02:00) [15]Нет все таки можно.
Напишу когда приду домой.
Reindeer Moss Eater (2005-09-15 18:00:00) [16]Нет, все таки нельзя.
В смысле я написал выражение, которое выстроит надор данных по этому правилу, но capability no supported
Reindeer Moss Eater (2005-09-15 17:56:00) [17]Кажется это можно и в LocalSQL.
:)
alex-ran (2005-09-15 17:50:00) [18]Вообще-то я и склонялся к мысли как и Johnmen ©
но думал, а вдруг?
Ну а раз нет, то спасибо всем и вопрос закрыт.
Johnmen (2005-09-15 17:35:00) [19]Не поможет...
Reindeer Moss Eater (2005-09-15 17:30:00) [20]Для парадокса изучай LocalSQL Guide