2017-03-03 3 views
0

キャストオプションを使用して日付を月に変換し、また別のキーワードを使用します。今、私は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 
+2

このような情報はほとんど表示されていません。実行しているクエリなどのコンテキストをいくつか共有できますか? – Mureinik

+0

上記のように、DISTINCT CAST(DATE(MONTH、INV_DATE)をVARCHAR(12)AS AS_DATEからAP_INVOICE_HEAD – user7653509

+0

に変更すると、ヘルプが表示されません。私もこれを試してみたが何をして動作していない – Phil3992

答えて

0

ソートするために月に基づいて、あなたは、SELECT文の後に実行されることにより、順序が直接INV_DATE上で順序を使用することができますorder by Month(date)

+0

明確なキーワードがなくてもうまく動作します。 – user7653509

+0

しかし、私は別個の値が必要です – user7653509

0

を使用することができます...

SELECT DISTINCT CAST(DATENAME(MONTH,INV_DATE) AS VARCHAR(12)) AS INV_DATE 
FROM AP_INVOICE_HEAD ORDER BY INV_DATE 
1

あなたがDISTINCTキーワードを使用しているので、あなたは結果セットをソートするselect句から列を使用する必要があります。

簡単な解決策は、select句に月の番号を追加して、ORDER BY句でそれを使用することです:選択リストに別の列を追加含まない

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 

別のオプションです

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がないからのエイリアスに、テーブルの列を参照DISTINCTGROUP BYとを交換しますselect句
ここではt.修飾子は不要ですが、クエリをより読みやすくします。

+0

ありがとう、その作業@Zohar – user7653509

+0

[喜んで助けて: - )](http://meta.stackoverflow.com/questions/291325/how-to-show-appreciation-to-a-user -on-stackoverflow/291327#291327) –

関連する問題