Сортировать по дате на сервере sql

Я хочу отсортировать записи, основанные на LastModifiedDate или CreatedDate, я хочу, чтобы последний из двух должен отображаться сверху. я пытался с order by CreatedDate DESC, LastModifiedDate DESC но это не показывает последние из них сверху, это дает первый приоритет lastmodifieddate, а затем CreatedDate

3 ответа

Вы можете использовать оператор Case в предложении Order By, например:

order by 
    case when CreatedDate > LastModifiedDate then CreatedDate else LastModifiedDate end DESC

Вы можете сравнить 2 даты в 2 колонках и выбрать, что будет последним

SELECT 
   CASE WHEN lastmodifiedDate > createdDate THEN lastmodifiedDate
        ELSE createdDate
   END AS LatestDate
FROM yourtable

Извините, я забыл, что вам нужно заказать по. Тогда вы можете попробовать ниже

select columns from yourtable order by CASE WHEN lastmodifiedDate > createdDate THEN lastmodifiedDate
        ELSE createdDate
   END AS LatestDate desc
DECLARE @A TABLE (ID INT,CREATION_DATE DATE,LAST_MODIFIED_DATE DATE)
INSERT INTO @A
VALUES 
(1,'2016/06/06','2016/06/06'),
(2,'2016/06/06','2016/06/07'),
(3,'2016/06/06','2016/06/05')

SELECT  S.* FROM 
(
SELECT  A.ID,A.CREATION_DATE,A.LAST_MODIFIED_DATE,
        CASE
            WHEN A.LAST_MODIFIED_DATE > A.CREATION_DATE THEN A.LAST_MODIFIED_DATE
            ELSE A.CREATION_DATE 
        END AS ORDER_DATE
FROM    @A A
) S
ORDER BY S.ORDER_DATE DESC
Другие вопросы по тегам