我使用强制选项将日期转换为月份,并使用Distinct关键字。现在我想安排从1月到12月的月份订单。我怎样才能做到这一点?从1月至12月安排月份订单。我怎样才能做到这一点?
QUERY:
SELECT DISTINCT CAST(DATENAME(MONTH,INV_DATE) AS VARCHAR(12)) AS INV_DATE
FROM AP_INVOICE_HEAD
ORDER BY INV_DATE ASC
我使用强制选项将日期转换为月份,并使用Distinct关键字。现在我想安排从1月到12月的月份订单。我怎样才能做到这一点?从1月至12月安排月份订单。我怎样才能做到这一点?
QUERY:
SELECT DISTINCT CAST(DATENAME(MONTH,INV_DATE) AS VARCHAR(12)) AS INV_DATE
FROM AP_INVOICE_HEAD
ORDER BY INV_DATE ASC
您可以通过INV_DATE SELECT语句后,将执行使用直接订购,因为为了...
SELECT DISTINCT CAST(DATENAME(MONTH,INV_DATE) AS VARCHAR(12)) AS INV_DATE
FROM AP_INVOICE_HEAD ORDER BY INV_DATE
由于您使用的是DISTINCT
关键字,您必须使用一列从SELECT子句中的结果通过集进行排序。
简单的解决办法是在一个月号码添加到SELECT子句,然后通过子句中使用它的顺序:
SELECT DISTINCT CAST(DATENAME(MONTH,t.INV_DATE) AS VARCHAR(12)) AS INV_DATE,
DATEPART(MONTH, INV_DATE) As INT_Month
FROM AP_INVOICE_HEAD
ORDER BY INT_Month
不涉及添加另一列选择列表中的另一个选项是更换DISTINCT
与GROUP BY
:
SELECT CAST(DATENAME(MONTH, INV_DATE) AS VARCHAR(12)) As INV_DATE
FROM AP_INVOICE_HEAD t
GROUP BY CAST(DATENAME(MONTH, INV_DATE) AS VARCHAR(12))
ORDER BY MAX(MONTH(t.INV_DATE))
注:在order by子句,INV_DATE
指的是列从表中,而不是从别名select子句。
即使t.
限定符在这里不需要,它确实使查询更具可读性。
谢谢,它的工作@Zohar – user7653509
[很高兴帮助: - )](http://meta.stackoverflow.com/questions/291325/how-to-show-appreciation-to-a-user -on-计算器/ 291327#291327) –
很难回答一个这样的信息很少的问题。你能分享一些更多的上下文,比如你正在运行的查询吗? – Mureinik
SELECT DISTINCT CAST(DATENAME(MONTH,INV_DATE)AS VARCHAR(12))AS INV_DATE FROM AP_INVOICE_HEAD – user7653509
上面没有您的查询很难提供帮助。我建议寻找到ORDER BY虽然 – Phil3992