毎年毎月の注文数を取得しようとしていますが、いくつかの関連する関数があります。役に立った集計関数またはGROUP BY句に含まれていないため、選択リストで列が無効です
まず日付要素(M、受注日)、DATEPART(Y、受注日)ですので、次のように私は自分のコードを書いた:
select DATEPART(Q, OrderDate) Q , datepart(YEAR, OrderDate) Y, count(*) count
from Orders
group by DATEPART(Q, OrderDate), datepart(Y, OrderDate);
を、それはエラーがあります: 列 'をOrders.OrderDate' は無効です選択リストは集合関数またはGROUP BY句のいずれにも含まれていないため選択リストには含まれません。
そして、私は月(DATEORDER)を使用する試み、およびYear(DATEORDER)およびコードは以下の通りである:
select month(OrderDate) M , year(OrderDate) y, count(*) count
from Orders
group by month(OrderDate),year(OrderDate);
上記のコードの結果は、それが成功であることを示しています。
私の質問は、最初のコードにエラーがありますが、2番目のコードが正しい理由は何ですか?ありがとう!
混乱の中でだとして 'Q'は、SQL Server内のキーワードがあるため。 –
とにかく日付部分の短縮形を使用しないでください。 http://sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/bad-habits-to-kick-using-shorthand-with-date-time-operations.aspx –