Помогите с запросом SQL - покажите сегодня день рождения на вершине таблицы - PullRequest
0 голосов
/ 20 января 2011

У меня есть таблица в SQL Server 2008

Мне нужно, чтобы первые результаты были у людей, у которых сегодня день рождения, а остальные результаты отсортированы по fname, lname

например, у меня есть эта таблица:

fname|lname|Tdate
AA   |111  |03/08
BB   |222  |18/01
FF   |11   |20/01
CC   |333  |31/07
DD   |444  |10/04
EE   |22   |20/01

сегодня = 20/01/2011

и мне нужно это увидеть:

fname|lname|Tdate
FF   |11   |20/01
EE   |22   |20/01
AA   |111  |03/08
BB   |222  |18/01
CC   |333  |31/07
DD   |444  |10/04

Как это сделать?

спасибо заранее

Ответы [ 3 ]

3 голосов
/ 20 января 2011

Примерно так в конце вашего запроса.

order by 
case when cast(tdate as date) = cast(getdate() as date) THEN 1
else 0 end desc, 
fname, lname
0 голосов
/ 20 января 2011
ORDER BY
    SIGN(ABS(DATEDIFF(day, Tdate, GETDATE()))),
    Tdate
0 голосов
/ 20 января 2011

ВЫБЕРИТЕ ИМЯ, ИМЯ, ТДАТА, 1 КАК РАНК ОТ ГДЕ ТДАТА = GETDATE ()

UNION

ВЫБЕРИТЕ ИМЯ, ИМЯ, ТДАТА, 2 В ПОРЯДКЕ ОТ ГДЕ ДАТА <> GETDATE ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...