2016-08-10 12 views
0

私が始まり、簡単な声明があります。それは、このクエリに月の名前を追加することが可能かどう要約MONTH値

SELECT a.product, MONTH(a.saledate) AS Month, Count(*) AS Total 

どの利回り、例えば、

Product   Month  Total 

Bike    8    1000 

誰が助言することができますをし、また、毎月合計を表示することも可能ですか?

ありがとうございます!

次になっ月:

+0

答えはyesとyesです。 (サンプルテーブルのデータと予想される結果を追加して、クエリ全体を表示してください) – jarlh

+0

使用しているデータベースで質問にタグを付けます。 –

+0

それはMySQLになるはずです。非標準的な集約はそれを遠ざけます。 https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html –

答えて

2

この例のクエリでは、テーブル内のすべての行がカウントされ、ランダムに選択された行の商品と販売日の横にその数が表示されます。それはあなたが望むものではありません。 MySQLはそのような風変わりな方法です。他のDBMSはあなたのサンプルクエリを拒否します。

あなたが販売されている製品の毎月の要約を表示したい場合は、ここでの基本的なクエリがあります:

SELECT a.product, 
     LAST_DAY(a.saledate) AS month_ending, 
     COUNT(*) AS Total 
    FROM table a 
    GROUP BY a.product, LAST_DAY(a.saledate) 

The LAST_DAY() functionは、日付から月と年を抽出するための素晴らしい方法です。

最後に、月のテキスト名を表示する場合は、the DATE_FORMAT() functionを使用します。フォーマット指定子として%bは3文字の月名を与え、%Mは完全な月名を与える。したがって、このクエリはそれを行います。あなたがLAST_DAY()の代わりにthe EOMONTH() functionを使用することができます2012+ SQL Serverで

SELECT a.product, 
     LAST_DAY(a.saledate) AS month_ending, 
     DATE_FORMAT(LAST_DAY(a.saledate), '%M %Y')) AS month 
     COUNT(*) AS Total 
    FROM table a 
    GROUP BY a.product, LAST_DAY(a.saledate) 

SQL Server 2008以降では、DATENAME(mm, a.saledate)を使用して日付から月の名前を取得できます。

+0

まず、私の曖昧さに対する謝罪。私はMySQLではなくT-SQLを使用しています。私はもっと明確にすべきでした。私に戻ってきてくれてありがとう。 –

+0

悲しいことに私はSQL Server 2012+を持っていません - 私たちは2008R2を使用しています。残念ながら、EOMONTH()関数を使用することはできません。DATENAMEを歓迎します。 –

+0

「eomonth for SQL Server 2008」をお探しの場合は、お好きな検索エンジンが役立つ情報を提供します。 –

2

MySQLを使用している可能性があり、月名

1)

SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ', (MONTH(a.saledate) * 4) - 3, 3) 

2)

DATENAME(month, a.saledate) 

がいくつかpoepleが言うを得るための二つの方法があります名前は次のとおりです:

SELECT MONTHNAME(a.saledate);