2013-10-27 53 views
-5

查询我想:日期月份年转换为newdate SQL,顺序按newdate

SELECT Datename(month, c1.date) + ' - ' 
     + Datename(year, c1.date) AS newdate 
FROM cust_ledger AS c1 
WHERE 
GROUP BY Datename(month, c1.date) + ' - ' 
     + Datename(year, c1.date) 
ORDER BY newdate 

将返回:

December-2013 
Janyuary-2013 
November-2013 
Octomber-2013

我想我的结果进行排序:

Janyuary-2013 
Octomber-2013 
November-2013 
December-2013
+3

-1要求解决方案“尽快”,好像你的“问题”是世界上最重要的事情! – geomagas

+0

对于StackOverflow的未来问题,请使用正确的专业英语(避免非wana和文本说话等非单词),发布实际代码'WHERE GROUP BY'肯定无效,绝对不要求任何紧急事件。 –

+1

@MartinSmith清理完毕。 – Kermit

回答

-1

尝试order by c1.日期::

select 
CONCAT(DATENAME(`month`,c1.`date`),' - ',DATENAME(`year`, c1.`date`)) as newdate 
from cust_ledger as c1 
group by YEAR(ci.`date`),MONTH(c1.`date`) 
order by c1.`date` 
+0

Msg 4104,Level 16,State 1,Line 4 无法绑定多部分标识符“ci.date”。来自cust_ledger的新日期 作为c1 群由YEAR(ci.date),MONTH(ci.date),MONTH(ci.date),MONTH(date,c1.date)作为新日期 – user2925066

+0

选择 +' - '+ DATENAME c1.date) order by c1.date – user2925066

+0

已使用concat,请检查 –

1

包括'字段'您想按照您的group by排序并按它们排序。

SELECT Datename(month, c1.date) + ' - ' 
     + Datename(year, c1.date) AS newdate 
FROM cust_ledger AS c1 
GROUP BY Datename(month, c1.date) + ' - ' 
     + Datename(year, c1.date),Datepart(year, c1.date),Datepart(Month, c1.date) 
ORDER BY Datepart(year, c1.date),Datepart(Month, c1.date) 
+1

谢谢veru很多bummi ...... – user2925066

0
SELECT TOP X * 
FROM myTable 
ORDER BY 
    CASE 
     WHEN LEFT(Col , LEN(Col) - 5)= 'December' THEN 12 
     WHEN LEFT(Col , LEN(Col) - 5)= 'November' THEN 11 
     WHEN LEFT(Col , LEN(Col) - 5)= 'October' THEN 10 
     WHEN LEFT(Col , LEN(Col) - 5)= 'September' THEN 9 
     WHEN LEFT(Col , LEN(Col) - 5)= 'August' THEN 8 
     WHEN LEFT(Col , LEN(Col) - 5)= 'July' THEN 7 
     WHEN LEFT(Col , LEN(Col) - 5)= 'June' THEN 6 
     WHEN LEFT(Col , LEN(Col) - 5)= 'May' THEN 5 
     WHEN LEFT(Col , LEN(Col) - 5)= 'April' THEN 4 
     WHEN LEFT(Col , LEN(Col) - 5)= 'March' THEN 3 
     WHEN LEFT(Col , LEN(Col) - 5)= 'February' THEN 2 
     WHEN LEFT(Col , LEN(Col) - 5)= 'January' THEN 1 

    END ASC 

你斯佩林斯在某些情况下,像'Janyuary''Octomber'有点滑稽只是记住这一点,而这代码应该为你工作:)

在这里看到的结果sqlfiddle

+0

检查http://sqlfiddle.com/#!3/fea94/1 –

相关问题