ホームページ >データベース >mysql チュートリアル >SQL データを月と年でグループ化し、出力を「月-年」としてフォーマットするにはどうすればよいですか?

SQL データを月と年でグループ化し、出力を「月-年」としてフォーマットするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-28 12:35:36209ブラウズ

How to Group SQL Data by Month and Year and Format the Output as

月と年による SQL グループ化

SQL では、時系列データを分析するときにデータを月と年でグループ化するのが一般的なタスクです。これを実現するには、MONTH() 関数と YEAR() 関数を GROUP BY 句とともに使用します。

問題ステートメント

ユーザーがクエリ中に問題が発生しました。 「日付」列を「月-年」として表示する順序テーブル (例: 「9-2011」)。彼らは次のクエリを使用しています:

SELECT MONTH(date) + '.' + YEAR(date) AS Mjesec, SUM(marketingExpense) AS SumaMarketing, SUM(revenue) AS SumaZarada 
FROM [Order]
WHERE (idCustomer = 1) AND (date BETWEEN '2001-11-3' AND '2011-11-3')
GROUP BY MONTH(date), YEAR(date)

ただし、このクエリは月 (例: "9") のみを表示し、ユーザーは出力に月と年の両方を含めたいと考えています。

解決策

この問題を解決するには、CAST() 関数を使用して月と年を変換します。値を文字列に分割し、間にハイフンを入れて連結します。更新されたクエリは次のとおりです。

SELECT CAST(MONTH(date) AS VARCHAR(2)) + '-' + CAST(YEAR(date) AS VARCHAR(4)) AS Mjesec, SUM(marketingExpense) AS SumaMarketing, SUM(revenue) AS SumaZarada 
FROM [Order]
WHERE (idCustomer = 1) AND (date BETWEEN '2001-11-3' AND '2011-11-3')
GROUP BY CAST(MONTH(date) AS VARCHAR(2)) + '-' + CAST(YEAR(date) AS VARCHAR(4))

このクエリは、月と年の両方を表示して、「日付」列を目的の形式で返します。

別のオプションは、キャストするときに先行ゼロを使用することです。一貫したフォーマットを確保します。これは、right() 関数を使用して実現できます。

GROUP BY 
  CAST(YEAR(date) AS VARCHAR(4)) + '-' + right('00' + CAST(MONTH(date) AS VARCHAR(2)), 2) 

このアプローチでは、1 桁の月の値に先頭のゼロが追加され、統一された書式設定になります (例: "09-2011")。

以上がSQL データを月と年でグループ化し、出力を「月-年」としてフォーマットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。