あなたがグループ・バイ節でextract()
通話繰り返すことができます:
select Name,
extract(month from fill_Date) as Month,
extract(year from fill_Date) as Year,
sum(quantity)
from TableA
group by Name,
extract(month from fill_Date),
extract(year from fill_Date)
または使用、その後、値を抽出するために、サブクエリ(インライン・ビュー)またはCTEを使用します
select Name,
Month,
Year,
sum(quantity)
from (
select Name,
extract(month from fill_Date) as Month,
extract(year from fill_Date) as Year,
quantity
from TableA
)
group by Name,
Month,
Year
:それは定義されていて、クエリの同じレベルで列の別名を参照することはできませんが、サブクエリがそれを意味
は同じレベルではありません - 列グループのエイリアス
あなたはもちろん、年と月を別々に抽出する必要はありませんが、もちろんそうかもしれません。あなたの目標は年/月の組み合わせによってちょうどグループにある場合、あなたはそれではなく、そのことによって、列値、およびグループの一日と任意の時間の部分を無視するためにtrunc()
機能を使用することができます。
select Name,
to_char(trunc(fill_Date, 'MM'), 'MM YYYY') as month,
sum(quantity)
from TableA
group by Name,
trunc(fill_Date, 'MM')
trunc(fill_Date, 'MM')
ができますあなたはその月の初日に真夜中になります。選択リストのto_char()
を使用すると、月と年だけが表示されますが、現在は単一の列になりますが、2つの数字ではなく文字列として表示されます。グループウェアでto_char()
を使用できますが、そうする必要はありません。
'fill_Date'の代わりに 'Group By'に' extract(Month from fill_Date)、extract(year from fill_Date) 'を入れてください。 –