Как добиться последней даты заказа в формате ММ / ДД / ГГГГ - PullRequest
0 голосов
/ 05 сентября 2018
IF OBJECT_ID('TEMPDB..#CommaDate') IS NOT NULL
    DROP TABLE #CommaDate

CREATE TABLE #CommaDate
(
    DateFormate DATE
)

INSERT INTO #CommaDate VALUES('2018-02-24'),('2018-01-10'),('2017-05-23'),('2017-04-06')

SELECT DISTINCT STUFF((SELECT DISTINCT ',' + CONVERT(VARCHAR(20),DateFormate,101) 
              FROM #CommaDate 
              ORDER BY ',' + CONVERT(VARCHAR(20),DateFormate,101) DESC 
              FOR XML PATH('')), 1,1, '')
FROM #CommaDate

То, что я ожидал, с последней датой заказа с форматом MM / DD / YYY

02/24/2018,01/10/2018,05/23/2017,04/06/2017

Ответы [ 5 ]

0 голосов
/ 05 сентября 2018

Надеюсь, что это будет работать

 IF OBJECT_ID('TEMPDB..#CommaDate') IS NOT NULL
        DROP TABLE #CommaDate

    CREATE TABLE #CommaDate
    (
        DateFormate DATE
    )

    INSERT INTO #CommaDate VALUES ('2018-02-24'),('2018-01-10'),('2017-05-23'),('2017-04-06')



         SELECT DISTINCT STUFF(
            (
            select  ', ' +CONVERT(VARCHAR(20),convert(datetime,DateFormate,101),101)  from #CommaDate order by  DateFormate desc
                          FOR XML PATH('')
            ), 1,1, '')
            FROM #CommaDate

выход

 02/24/2018, 01/10/2018, 05/23/2017, 04/06/2017
0 голосов
/ 05 сентября 2018

Удалить DISTINCT и добавить ORDER BY DateFormate DESC в ваш запрос.

0 голосов
/ 05 сентября 2018

Поскольку тип данных DATE, вы можете легко сгруппировать и упорядочить результат внутри подзапроса. По-видимому, вы ожидаете результат 1row x 1col, поэтому вы можете отказаться от внешнего предложения FROM:

SELECT STUFF((SELECT ',' + CONVERT(VARCHAR(20), DateFormate, 101)
    FROM #CommaDate
    GROUP BY DateFormate
    ORDER BY DateFormate DESC
    FOR XML PATH('')
), 1, 1, '')

Выход:

(No column name)
02/24/2018,01/10/2018,05/23/2017,04/06/2017
0 голосов
/ 05 сентября 2018

Просто разделите ORDER BY и DISTINCT и используйте значения Date для сортировки

IF OBJECT_ID('TEMPDB..#CommaDate') IS NOT NULL
    DROP TABLE #CommaDate

CREATE TABLE #CommaDate
(
    DateFormate DATE
)

INSERT INTO #CommaDate VALUES('2018-02-24'),('2018-01-10'),('2017-05-23'),('2017-04-06')

SELECT STUFF((SELECT ',' + CONVERT(VARCHAR(20),d.DateFormate,101) 
              FROM ( 
                SELECT DISTINCT DateFormate 
                FROM #CommaDate
              ) d
              ORDER BY d.DateFormate DESC 
              FOR XML PATH('')), 1,1, '')
FROM #CommaDate
0 голосов
/ 05 сентября 2018

я попробовал вот так

 IF OBJECT_ID('TEMPDB..#CommaDate') IS NOT NULL
        DROP TABLE #CommaDate

    CREATE TABLE #CommaDate
    (
        DateFormate DATE
    )

    INSERT INTO #CommaDate VALUES('2018-02-24'),('2018-01-10'),('2017-05-23'),('2017-04-06')

    SELECT DISTINCT STUFF((SELECT  ',' + CONVERT(VARCHAR(20),DateFormate,101) 
                  FROM #CommaDate 
                  ORDER BY concat(',' , year(CONVERT(VARCHAR(20),DateFormate,101))) desc  
                  FOR XML PATH('')), 1,1, '')
    FROM #CommaDate

или

SELECT  distinct STUFF((SELECT  ',' + CONVERT(VARCHAR(20),DateFormate,101) 
              FROM #CommaDate 
             -- ORDER BY concat(',' , year(CONVERT(VARCHAR(20),DateFormate,101))) desc  
              FOR XML PATH('')), 1,1, '')
FROM #CommaDate

выход

02/24/2018,01/10/2018,05/23/2017,04/06/2017
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...