2016-11-30 41 views
0

我正在嘗試執行以下操作(顯然不起作用,因爲我試圖按列排序而不是按group by子句排序),其中TransDateString是一個varchar列,定義爲TransDate(日期)列的cast(datepart(m,TransDate) as varchar)+'-'+cast(datepart(yyyy,TransDate) as varchar)按日期排序但在SQL中返回一個字符串

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 

結果:

TransDateString 
    10-2003 
    01-2005 
    05-2012 
+0

'FOR XML PATH ('')'和用'mysql'標記的問題?多麼奇怪 – Rahul

+0

請看這裏改進問題:https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ – TheGameiswar

+0

它是一個更大的一部分查詢。我編輯它只是相關的部分。 tsql部分並不重要。 –

回答

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 
+0

這可能沒有CTE? –

+0

您需要某種子查詢來分配行號,但不需要cte。我會更新我的答案。 –