ASP, сортировка базы данных с условиями, используя несколько столбцов - PullRequest
1 голос
/ 09 апреля 2010

Прежде всего, я все еще работаю в классическом ASP (vbScript) с базой данных MS Access. И да, я знаю его архаику, но я все еще надеюсь, что смогу сделать это!

Итак, теперь к моей проблеме:

Взять в качестве примера следующую таблицу:

ПРОЕКТЫ

ContactName StartDate EndDate    Complete
Mitch    2009-02-13   2011-04-23   No
Eric    2006-10-01   2008-11-15   Yes
Mike    2007-05-04   2009-03-30   Yes
Kyle    2009-03-07   2012-07-08   No

Используя ASP (с VBScript) и базу данных MS Access в качестве бэкэнда, я хотел бы иметь возможность отсортировать эту таблицу с помощью следующей логики:

Я хотел бы отсортировать эту таблицу по дате, однако, в зависимости от того, завершен ли данный проект или нет, я бы хотел, чтобы он использовал либо «StartDate», либо «EndDate» в качестве ссылки для конкретной строки.

Итак, чтобы разбить его дальше, я надеюсь достичь этого:

Для ПРОЕКТОВ, где Завершено = «Да», ссылка «EndDate» для сортировки.

Для ПРОЕКТОВ, где Завершено = «Нет», ссылка «StartDate» для сортировки.

Итак, если бы я отсортировал приведенную выше таблицу, следуя этим правилам, результат был бы:

ПРОЕКТЫ

 ContactName StartDate EndDate   Complete
1 Eric    2006-10-01   2008-11-15*   Yes
2 Mitch    2009-02-13*   2011-04-23   No
3 Kyle    2009-03-07*   2012-07-08   No
4 Mike    2007-05-04   2009-03-30*   Yes

* Я поставил звездочку рядом с датой, которая должна использоваться для сортировки в таблице выше.

ПРИМЕЧАНИЕ: Это на самом деле упрощенная версия того, что мне действительно нужно сделать, но я думаю, что если бы я мог просто понять это, я бы смог сделать все остальное самостоятельно.

ЛЮБАЯ ПОМОЩЬ БОЛЬШЕ ЦЕНИТСЯ; Я БОРЬБА С ЭТИМ ДЛЯ ДАЛЬНЕЙШЕГО СЛИШКОМ СЛИШКОМ СЕЙЧАС!

Спасибо!

Ответы [ 2 ]

2 голосов
/ 09 апреля 2010
select *
from Projects
order by iif(Complete = 'Yes', EndDate, StartDate)
0 голосов
/ 09 апреля 2010

Ваш запрос MS Access должен выглядеть примерно так:

SELECT Table1.ContactName, Table1.StartDate, Table1.EndDate, Table1.Complete
FROM Table1
ORDER BY IIf([Complete]="Yes",[EndDate],[StartDate]);
...