SQL中的DISTINCT,SELECT和SORT问题

时间:2009-10-07 11:38:01

标签: sql sql-server tsql

也许有人可以帮我解决我在MS SQL Server上的SELECT语句。我对(T)SQL不是很熟练。

我有一个名为RECORDS的表,并且有一个名为[BEGIN]的DATETIME列。现在我想得到一些看起来像这样的“nvarchars”“08年12月8日,09年1月9日”..

我自己想出了以下内容。

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

然而,这是未排序的,我希望从头到尾排序结果集。

February 09
January 09
December 08

任何?

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

怎么样

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

添加ORDER BY [BEGIN] DESC

答案 4 :(得分:0)

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