5

完全な日付 YYYY-MM-DD を取得し、月の情報のみを取り出してから、月を個々の行としてグループ化するテーブルをまとめようとしています。

andコマンドを使用してMONTH(DATE)コマンドを使用してみましたが、表にリストされている 4 年間の月が返されます。1 から 12 までの 48 行を返し、4 回繰り返します。1-12 の 1 リターンを順番に取得したい。Group byOrder By

ここに私がこれまでに持っているコードがあります。

select MONTH(DATE) As "Month"
from DW******.SL****
Group By DATE
Order by DATE 

SQLを使い始めたばかりなので、素朴な質問で申し訳ありません。

誰かが私に手を差し伸べることができれば。これは Db for i を使用する予定CONVERTでしたが、私たちのサーバーでは機能しません。

4

4 に答える 4

10

group by で month(date) を使用できませんか?

select MONTH(DATE) As "Month"
from DW******.SL****
Group By MONTH(DATE)
Order by MONTH(DATE)
于 2013-01-11T21:39:07.913 に答える
2

MONTH(Date)DATE ではなくgroup by が必要です

select MONTH(DATE) As "Month"
from DW******.SL****
Group By MONTH(DATE)
Order by MONTH(DATE) 
于 2013-01-11T21:41:43.203 に答える
1

1 月、2 月、3 月などの月が必要な場合は、以下のクエリを使用します。

SELECT MONTHNAME (CURRENT_TIMESTAMP) from customers;

于 2014-06-09T20:49:07.947 に答える
1

別のアプローチは、より複雑なクエリに入るときに一般的に役立つ場合があります。これにより、物事を精神的にチャンク(またはステージ)に分解できます。

次のようになります。

WITH  x as
( fullselect1)
fullselect2

ここで、 x はfullselect1を指し、 x はfullselect2の FROM テーブルとして使用されます。これはステップ 1 とステップ 2 と考えることができますが、オプティマイザはどのように選択してもこれを達成できます。

ここであなたの場合、あなたは言うことができます

with Q as
( select MONTH(DATE) as mo, units
    from DW******.SL**** 
)
select mo, sum( units ) qty_sold
  from Q
  group by mo
  order by mo

この概念は、ここでは必要ありませんが、非常にうまく拡張でき、理解しやすい部分に分割することで複雑なクエリを作成するのに役立ちます。

リファレンス マニュアルでこれを見ると (インフォメーション センターへのリンクを提供します)、IBM はこれを Common Table Expression と呼んでいます。[CTE]

于 2013-01-11T23:27:09.270 に答える