Проблема с DISTINCT, SELECT и SORT в TSQL - PullRequest
1 голос
/ 07 октября 2009

Может быть, кто-нибудь может помочь мне с моим оператором SELECT на MS SQL Server. Я не очень опытен в (T) SQL.

У меня есть таблица с именем RECORDS и столбцом DATETIME с именем [BEGIN]. Теперь я хотел бы получить nvarchars, которые выглядят так: «8 декабря, 9 января, 9 февраля» ..

Я сам придумал следующее.

SELECT DISTINCT DATENAME(MONTH, [BEGIN]) + ' ' + SUBSTRING(DATENAME(YEAR, [BEGIN]),3,4) 
FROM RECORDS 

Однако это не отсортировано. Я бы хотел, чтобы результирующий набор упорядочивался от первого до последнего.

February 09
January 09
December 08

Любой

Ответы [ 5 ]

1 голос
/ 07 октября 2009
select  datename(month, yyyymm) 
    + ' ' 
    + right(convert(varchar(10), yyyymm), 2)
from
(
    select  dateadd(month, datediff(month, 0, [BEGIN]), 0) as yyyymm
    from    yourtable
    group by dateadd(month, datediff(month, 0, [BEGIN]), 0)
) a
order by yyyymm desc
1 голос
/ 07 октября 2009

а как же

with tbldate AS 
(
select distinct DATENAME(MONTH, date) + ' ' + SUBSTRING(DATENAME(YEAR, date),3,4)  as date
from dbo.tbldate  
)
select * from tbldate
order by date desc
1 голос
/ 07 октября 2009
SELECT  DATENAME(MONTH, DATEADD(month, b_month - 1, 0)) + ' ' + SUBSTRING(CAST(b_year AS VARCHAR), 3, 4)
FROM    (
        SELECT  DISTINCT YEAR([BEGIN]) AS b_year, MONTH([BEGIN]) AS b_month
        FROM    RECORDS
        ) q
ORDER BY
        b_year, b_month
0 голосов
/ 07 октября 2009
SELECT DISTINCT DATENAME(MONTH, [BEGIN]) + ' ' + SUBSTRING(DATENAME(YEAR, [BEGIN]),3,4) FROM RECORDS
ORDER BY 1 DESC
0 голосов
/ 07 октября 2009

Добавить ЗАКАЗАТЬ НА [НАЧАЛО] DESC

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