2016-11-30 2 views
0

Я пытаюсь сделать следующее (что, очевидно, не работает, потому что я пытаюсь заказать столбец не в предложении group by), где TransDateString является varchar столбец, определенный как cast(datepart(m,TransDate) as varchar)+'-'+cast(datepart(yyyy,TransDate) as varchar) столбца TransDate (дата).Закажите по дате, но верните строку в 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 

Без КТР:

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. Я уточню свой ответ. –

Смежные вопросы