按日期排序但在SQL

时间:2016-11-30 13:08:22

标签: sql-server sql-server-2008-r2

我尝试执行以下操作(显然无法正常工作,因为我尝试按不在group by子句中的列进行排序),其中TransDateString是varchar列,定义为{{ TransDate(date)列的1}}。

cast(datepart(m,TransDate) as varchar)+'-'+cast(datepart(yyyy,TransDate) as varchar)

我想要完成的是按日期排序结果,但只返回列作为格式化字符串。

这里我要查找的数据和输出是:

SELECT c.TransDateString
        FROM #dataSet c
        GROUP BY c.TransDateString 
        ORDER BY c.TransDate asc

结果:

TransDate    |    TransDateString
2005-01-01   |    01-2005
2012-15-05   |    05-2012
2003-22-10   |    10-2003

1 个答案:

答案 0 :(得分:1)

;With cteRows As
(
SELECT c.TransDateString,
       Row_Number() Over (Partition By c.TransDateString Order By c.TransDate) RowNum
        FROM #dataSet c
)
Select TransDateString From cteRows Where RowNum = 1

没有CTE:

Select TransDateString From
(
Select c.TransDateString,
       Row_Number() Over (Partition By c.TransDateString Order By c.TransDate) RowNum
        FROM #dataSet c
) A
Where RowNum = 1