• 検索結果がありません。

商品コード「23」は 8 万 400 円、「46」は 12 万 5,000 円であったことを確認できます。

3. 商品コードごとの合計では、どの商品なのかが分かりづらいので、次は、"商品名ごとの受注 金額" を取得してみましょう。これを取得するには、次のように「商品」テーブルと結合する 必要があります。

SELECT 商品名, SUM(単価 * 数量) FROM 受注明細

INNER JOIN 商品 ON 受注明細.商品コード = 商品.商品コード GROUP BY 商品名

しかし、結果はエラーになります。「単価」列は、「受注明細」テーブルにも、「商品」テーブ ルにも存在するからです。しかし、この 2 つの列は、同じ名前の「単価」でも意味が異なりま す。「受注明細」テーブルは “受注時” の単価、「商品」テーブルは “標準” の単価です。した がって、受注金額を計算するには、「受注明細」テーブルの「単価」列を利用する必要があり ます。

SELECT 商品名, SUM(受注明細.単価 * 数量) FROM 受注明細 INNER JOIN 商品 ON 受注明細.商品コード = 商品.商品コード GROUP BY 商品名

商品区分(商品分類)ごとの受注金額合計

4. 次に、飲料や調味料、菓子類など、"商品区分名ごとの受注金額" を取得してみましょう。商 品区分名を取得するには、次のように「商品区分」テーブルを結合します。

SELECT 区分名, SUM(受注明細.単価 * 数量) FROM 受注明細 INNER JOIN 商品 ON 受注明細.商品コード = 商品.商品コード INNER JOIN 商品区分 ON 商品.区分コード = 商品区分.区分コード GROUP BY 区分名

「飲料」区分は 494 万 9,750 円、「加工食品」区分は 227 万 2,900 円と、区分ごとの受注 金額の合計を取得できたことを確認できます。

Note: Reporting Services を利用したグラフの作成

SQL Server に標準搭載される Reporting Services(レポート サーバー)機能を利用すると、上記のクエリを もとに、次のようなグラフを簡単に作成することができます。

Reporting Services の操作方法については、本自習書シリーズの「Reporting Services 入門」で、基礎からス テップ バイ ステップ形式で簡単に試せるように説明しているので、ぜひチャレンジしてみてください。

年度ごとの受注金額合計

5. 次に、"受注年ごとの受注金額" を計算してみましょう。受注日(年月日)は、「受注」テーブ ルへ格納されていますが、「YEAR」という関数を利用することで、年月日のうちの「年」の みを取得できるようになります。

SELECT YEAR(受注日), SUM(受注明細.単価 * 数量) FROM 受注明細 INNER JOIN 受注 ON 受注明細.受注コード = 受注.受注コード GROUP BY YEAR(受注日)

2007 年は 868 万 2,930 円、2005 年は 1,159 万 9,700 円と、年ごとの受注金額の合計を 取得できたことを確認できます。なお、 YEAR 関数については、本自習書シリーズの

「Transact-SQL 入門」編で詳しく説明しています。

GROUP BY 句で複数の列を指定

6. 次に、GROUP BY 句へ複数の列を指定して、"受注年ごと、かつ区分名ごとの受注金額" を取 得してみましょう。

SELECT YEAR(受注日), 区分名, SUM(受注明細.単価 * 数量) FROM 受注明細 INNER JOIN 受注 ON 受注明細.受注コード = 受注.受注コード

INNER JOIN 商品 ON 受注明細.商品コード = 商品.商品コード INNER JOIN 商品区分 ON 商品.区分コード = 商品区分.区分コード GROUP BY YEAR(受注日), 区分名

ORDER BY YEAR(受注日), 区分名

GROUP BY へ「区分名」列を指定するために、「商品」テーブルと「商品区分」テーブルを 結合しています。最後の ORDER BY 句は、結果を分かりやすくするために付けています。

なお、この結果には、全体の合計とそれぞれの列の合計(区分ごとの合計と年ごとの合計)は 取得できていません。これを可能にするのが、次に説明する WITH ROLLUP と WITH CUBE です。

Note: Reporting Services を利用したグラフ

前述の Note で紹介した Reporting Services を利用すると、上記のクエリをもとに、次のような 2 次元グラ フも簡単に作成することができます。

2005年の飲料区分の 受注金額の合計 176万7,400円

2006年の飲料区分の 受注金額の合計 195万4,600円

2007年の飲料区分の 受注金額の合計 122万7,750円 2005年

2006年

2007年