次のクエリがあります
select
datepart(yy, orderDate) as 'year',
datename(mm, OrderDate) as 'month',
count(*) as 'Orders'
from orders (yeah I know its missing the schema, its from a book)
group by
datepart(yy, orderdate),
datename(mm, orderdate)
order by
datepart(yy, orderdate),
datename(mm, orderdate);
これは 3 列を返しますがdatename(mm, orderdate)
、文字列を返すため、それによる順序付けは 8 月を 1 月より前に置きます。
これに対する解決策は次のとおりでした。
select
datepart(yy, orderDate) as 'year',
datename(mm, OrderDate) as 'month',
count(*) as 'Orders'
from orders (yeah i know its missing the schema, its from a book)
group by
datepart(yy, orderdate),
datename(mm, orderdate),
datepart(mm, orderdate)
order by
datepart(yy, orderdate),
datepart(mm, orderdate);
グループごと/セクションごとの順序と、それが実際にどのように機能するかについて、まだ少し混乱しています。
私が理解している限り、group by は、4 つの列 (間違っている可能性があります) と 1 つdatepart(yy, orderdate), datename(mm, orderdate), datepart(mm, orderdate)
の列を持つ作業テーブルを作成していcount
ます。
作業テーブルにあるに遭遇するたびにorderdate
、カウントを増やします。それ以外の場合は、新しい行を追加しますか?
もともと、セクションごとにグループ内から を削除できると思ってDateName(mm, orderdate)
いましたが、本ではそれは不可能であると書かれていました。
誰かが舞台裏で実際に起こっていることを一歩踏み出すことができたり、これがどのように機能するかをもう少し詳しく説明するリソースを指摘したりできれば、それを感謝します.
ご協力いただきありがとうございます。