我使用強制選項將日期轉換爲月份,並使用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