SQL初心者のための横表示クエリとは?

このQ&Aのポイント
  • SQL初心者の方でも簡単に理解できるような、結果を横に表示するSQLクエリをご紹介します。
  • 横向きに表示するためのクエリを使って、縦に表示されていたデータをわかりやすく整理しましょう。
  • 具体的なクエリの例もご紹介しますので、ぜひ参考にしてください。
回答を見る
  • ベストアンサー

結果を横に表示するSQLを教えてください

SQL初心者です。 以下のような縦に表示されるクエリを横向きに表示する際のクエリを教えて頂けないでしょうか。 現在のクエリ結果 日付   種類   合計 4月1日 りんご 10 4月1日 みかん 20 4月2日 みかん 15 4月2日 りんご 30 4月3日 みかん 40 4月3日 りんご 5 ※クエリ詳細 select 日付,種類, sum (数量) as 合計 from テストテーブル group by 日付,種類 order by 日付 ※元データ 元データ 日付   種類   数量 4月1日 りんご 5 4月1日 りんご 2 4月1日 りんご 3 4月1日 みかん 10 4月1日 みかん 3 4月1日 みかん 7 上記を以下のような結果にしたいです。 種類  4月1日 4月2日 4月3日 りんご 10   30   5 みかん 20   15   40 わかりにくい説明で申し訳ございません。 どなたかご回答頂ければ幸いです。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5081/13278)
回答No.2

それは SQL でやるのではなく、DB からデータを取得したプログラム側でやるべきことです。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

SQLの処理系を書くこと。例SQLやOracleや・・・。 一般的なSQLの、受験の準備参考書を読んで質問しているのか。 WEB(例Google)ででも「TRANSPOSE」や「PIVOT」で照会して 読んでから、不明点を質問すること。

関連するQ&A

  • SQLでグループ化して降順表示がうまくいきません

    個人的にMysql、php環境でサイトを作っております。 そこで、素人質問で申し訳ありませんが、SQLでお伺いしたい点があります。 例えば下のようなテーブルがあります。 ▽果物テーブル 果物ID | 果物名 | 売れた日付 1 | リンゴ | 2008/11/1 2 | みかん | 2008/11/2 3 | みかん | 2008/11/3 4 | リンゴ | 2008/11/4 これを、 『最近売れた』果物順に、『グループ化』して並べ替えたいと思い、 下記のようなsqlを組みました。 $sql = "SELECT 果物名, FROM 果物テーブル GROUP BY 果物名 ORDER BY 売れた日付 DESC"; 意図としてはリンゴ、みかんの順に並べ替えたいのですが、 みかん、リンゴの順に表示されてしまいます。 想像では、グループ化したとき、古い日付の方が残ってしまい、 | リンゴ | 2008/11/1 | みかん | 2008/11/2 この部分を対象にして日付を降順にしてしまうからだと思うのですが、 これをうまく解決する方法が分かりません。 MSアクセスなどですと先に二重にクエリをかけるなどすることで 「先に降順で並べ替えたクエリを出し、その後グループ化させる」 など処理が簡単なのですが、phpではどうするのかいまひとつ分からず・・・ 申し訳ありませんがよろしくお願いします。

    • ベストアンサー
    • PHP
  • EXCELピボットテーブルの集計項目を追加したい

    ピボットテーブルで集計した結果に集計項目を追加したいのですが、 可能でしょうか? 追加したい項目は、数量合計÷担当件数です。 <元データ> 担当 支店 種目 数量 川上 東京  りんご 50 川上 名古屋 りんご 20 川上 埼玉  みかん 10 川上 埼玉  りんご 5 鈴木 大阪  りんご 25 鈴木 神戸  みかん 10 佐藤 福岡  みかん 30 <ピボットテーブル>       みかん  みかん  りんご   りんご 担当 合計数量 件数 合計数量 件数 佐藤 30  1 川上 10 1 75    3 鈴木 10   1 25    1 計 50 3 100    4     上記このテーブルに「みかん合計数量÷みかん件数」「りんご合計数量÷りんご件数」で 計算した項目「みかん平均」「りんご平均」を追加して、以下のようにしたいと思っています。 担当 みかん みかん平均 りんご りんご平均 佐藤 30 30.0 川上 10 10.0        75 25.0       鈴木 10 10.0        25 25.0       総計 50 16.7        100 25.0       以上

  • (2)-SQL文の書き方を教えてください。

    table項目:名称、日付、数量。 以上のtabelから以下のクエリーをつくりたいです: クエリー項目:名称、当日数量、当月数量。 日付の値は、フォーム上で指定する。 具体的に:フォーム上日付欄に2003/10/01と2003/10/30を指定し、実行すると、当日数量は、2003/10/30その日の合計数が出る。当月数量に指定された10/01から10/30までの数字の合計がでる。 今、片方だけ条件のSQL文を書けるですが、二つ条件のSQL文がとても難しい。 そうゆうSQL文を教えていただけませんか? よろしくお願いいたします。

  • (エクセル)積み上げ棒グラフの作成について

    エクセルで積み上げの棒グラフを作成しようと思います。 既に表にデータが入力されており、これをグラフにします。 (表)      品目   数量 1月1日  りんご   10 1月2日  みかん   20 1月3日  ぶどう   30 1月4日  りんご   10 1月5日  みかん   20 1月6日  ぶどう   30 1月7日  りんご   10 1月8日  みかん   20 1月9日  ぶどう   30 (積み上げ棒グラフ) 日付の列は無視して、品目(りんご、みかん、ぶどう)の数量を積み上げていきたいです。 完成イメージとしては りんご 10+10+10の積み上げ みかん 20+20+20の積み上げ ぶどう 30+30+30の積み上げ  に出来たらと思ってます。 積み上げグラフを選択しても、 9つの項目(りんご3個、みかん3個、ぶどう3個)がそれぞれ独立して表示されてしまい、積み上げになりません。 項目軸のラベルを変更しても同じ結果です。 どのようにしたら出来ますでしょうか。 りんご   10   10   10 みかん   20   20   20 ぶどう   30   30   30 と、表を作り直したらできるかと思うのですが、できれば今の表のままで作成できたらと思います。 ちなみに将来的には、さらに行が増えていきます。 積み上げグラフでも「横棒」で作成しようとしていますが、もし縦棒なら出来るならば縦棒でも良いです。 よろしくお願いします。

  • accessのクロス集計クエリについて

    大変初歩的な質問で申し訳ないのですが、今、accessの基礎本をみて自分でデータを作って、動作を一つずつ確認していっているのですが、 日付 商品名  個数 5月1日 みかん  6 5月4日 りんご  5 5月9日 りんご  2 6月1日 みかん  7 6月25日 りんご  5 7月2日  なし  7 7月23日 みかん  6 というデータを作って 商品名  5月 6月・・・ みかん  個数(合計) りんご なし のようになるのを期待していたのですが、 数値が表示されません。 四半期や年を日付フィールドに設定すると表示されます。 どこを見直せばよろしいでしょうか? よろしくお願いします。

  • 同じ日にちの件数を制限して抽出する

    日付ごとのデータがあり、同じ日付の数は日によって違い、10個の時も20個の時もあります。 そのデータを、同じ日付のデータは14個以下に制限し、それ以上は無視して別シートに抽出したいのですが。(エクセル2010) 下記のようなシート1のデータを      A     B     C 1  11月1日  りんご   A社 2  11月1日  みかん  C社 3  11月1日  とまと   B社 ・ ・ 14 11月1日  みかん  D社 15 11月1日  とまと   H社 16 11月2日  ばなな   B社  17 11月2日  りんご   D社 別シートに下記のように抽出      A     B     C 1  11月1日  りんご   A社 2  11月1日  みかん  C社 3  11月1日  とまと   B社 ・ ・ 14 11月1日  みかん  D社 15 11月2日  ばなな   B社 16 11月2日  りんご   D社 どなたか教えていただける方がいましたらよろしくお願いします。

  • SQL文でクロス集計をしたい

    アクセスでクロス集計のSQL文で作りたいと思っています。 このようなデータがあります 年月 支払先 数量 金額 201301 A 10 1000 201302 A 5 500 201302 B 20 2000 201301 C 10 3000 201303 C 15 1500 このデータを下記のように表示したいのですが、 分からなくて困っています。 支払先  データ   201301 201302 201303 A 数量     10      5 A 金額 1000 500 B 数量      20 B 金額 2000 C 数量     10 15 C 金額 3000 1500 合計 数量 20 25 15 合計 金額 4000 2500 1500 どのようにすれば実現出来ますか? 今は、 SELECT 支払先, "数量" AS データ, Sum(IIf([年月]='201301',[数量],0)) AS 201301, Sum(IIf([年月]='201302',[数量],0)) AS 201302, Sum(IIf([年月]='201303',[数量],0)) AS 201303, FROM T_データ GROUP BY 支払先; のクロス集計を 数量と金額、数量の合計と金額の合計でクロス集計をしたクエリを UNIONで実現しています。 出来れば数量と金額は1つのクエリで実現したいと思いますが方法があれば教えて頂きたい と思います。 どうぞ、よろしくお願い致します。

  • SQLでの集計について

    こんにちわ。以下のようなテーブルから条件に見合う合計を出したいと思いSQLを書いてみたのですが、 思った結果になりません。 テーブルA ID1 得意先Cd 営業所Cd 日付 1  001    001  2005/09/01 2  001    002  2005/09/01 3  001    001  2005/09/03 テーブルB ID2 ID1 部署 数量 金額 1  1  01  1  1000 2  1  01  1  1000 3  1  02  1  1000 4  2  01  1  1000 5  2  01  1  1000 6  3  01  1  1000 7  3  01  1  1000 8  3  02  1  1000 [抽出結果] 得意先Cd 営業所Cd 日付  部署 数量(Sum) 金額(Sum) 001    001  2005/09/01 01   2   2000 001    001  2005/09/01 02   1   1000 001    001  2005/09/03 01   2   2000 001    001  2005/09/03 02   1   1000 001    002  2005/09/01 01   2   2000 [SQL] select 得意先Cd,営業所Cd,日付,部署,SUM(数量) As '数量計',SUM(金額) As '金額計' from テーブルA AA Inner join テーブルB BB ON (AA.ID1 = BB.ID1) group by 得意先Cd,営業所Cd,日付,部署,数量,金額 order by 得意先Cd,営業所Cd,日付,部署 このSQLを実行すると、日付、部署共に同じ場合でも数量・金額が合計値となりません。 得意先Cd 営業所Cd 日付  部署 数量 金額 001    001  2005/09/01 01 1  1000 001    001  2005/09/01 01 1  1000 どのように変更を加えれば、上記の「抽出結果」にできるのでしょうか? よろしくお願いいたします。

  • 2つのDBからマージした結果をSQLで抽出するには

    ■下記の様な2つのデータベースとデータがあった場合に算出結果の様な形でデータを抽出したいのですが、SQLで実装するにはどうすれば良いでしょうか? データベースはOracleを使用しています。 【データベースA】 担当者  商品 担当者A りんご 担当者B りんご 【データベースB】 担当者  商品 担当者A みかん 担当者C みかん ■算出結果 担当者  商品 担当者A りんご、みかん 担当者B りんご 担当者C みかん

  • 種類別・期間別の集計

    下のような表での種類別・期間別の集計をしたいのですが?    A   B    C 1  8/1 10.000 りんご 2  8/2 50.000 みかん 3  8/4 12.000 りんご 4     10.000 ぶどう    ・ 10  8/15 5.000 みかん 11  8/16 25.000 ぶどう    ・ 26  8/30 13.000 りんご 35  8/31 8.000 みかん 毎月1日から15日と16日から月末までの各”りんご””みかん”2ぶどう”の個別の集計をしたいのですが日付が入る関数が分かりません。 月は毎月替わりますが、1日から15日と16日から月末は変わりません。 日付のセルには空白のセルが入る事があります。 よろしくお願いします。

専門家に質問してみよう