- 締切済み
- 困ってます
SQL文(基礎内容)
アドバイスお願いします。 Oracle-Ver-8。 基本中の基本の中身になると思いますが、教えてください。こういったことができるのかお願いします。 SQL文の内容ですが、 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ************************************************** SELECT A.商品コード, A.商品名, SUM(DECODE(B.月,1,1月売上,0)) AS 1月, SUM(DECODE(B.月,2,2月売上,0)) AS 2月, SUM(DECODE(B.月,3,3月売上,0)) AS 3月, : : FROM (状態が'ABC'のもの) A GROUP BY A.商品コード,A.商品名 ************************************************* ↑↑↑ このSQLに異なった状態のもの、'DEF'からも項目を追加したい場合、一つのSQLでどのように表現したらよいのでしょうか?可能でしょうか? 例、 ************************************************** SELECT A.商品コード, A.商品名, SUM(DECODE(B.月,13,13,13月売上,0)) AS 13月, SUM(DECODE(A.月,1,1月売上,0)) AS 1月, SUM(DECODE(A.月,2,2月売上,0)) AS 2月, SUM(DECODE(A.月,3,3月売上,0)) AS 3月, : : FROM (状態が'ABC'のもの) A, (状態が'DEF'のもの) B WHERE 結合条件????? GROUP BY A.商品コード,A.商品名 ************************************************* よろしくお願いします。
- mmbbol
- お礼率62% (17/27)
- Oracle
- 回答数3
- ありがとう数1
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- peugeot307
- ベストアンサー率22% (29/130)
#2の方も書かれてますが・・・ UNIONでいいんじゃないですか? テーブルAとテーブルBに何か関係があるのですか?
- g_express999
- ベストアンサー率29% (115/386)
例の内容がよく分かりませんが、2つのSELECT文は「UNION」で結合できます。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>FROM (状態が'ABC'のもの) A うーん、ここは何を差しているんでしょうか? Aテーブルに状態というカラムがあって、その値がABCのもののみ集計対象ということでしょうか? とりあえず、普通のテーブルと考えていいんですか? 他になにか条件があるんですか?

補足
説明不足ですみません。 逆に変な言葉をつけすぎました。 「状態が'ABC'のもの」 「状態が'DEF'のもの」 は忘れてください。 <最初のSQLについて> 最初のSQLのFROM句には、Aテーブルからの各対象データを集計してだしています。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 次にやりたい事として、 Bテーブルを追加して、最初のSQLと同じ用に集計したいのですが、BテーブルはSELECT文を使用してAテーブルとは違う条件で抽出しています。 こういう状態のテーブルからの書き方はできるのでしょうか?という質問なのですが。お願いします。
関連するQ&A
- 【再】2)-SQL文の書き方を教えてください。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=694458 先日この問題で投稿しましたが、未完成のため、再度要望を整理し、ご指導をお願いいたします。 W←tabel名:名称、日付、数量 明細データ: 名称 日付 数量 A 2003/10/01 200 B 2003/10/03 500 C 2003/10/10 4000 A 2003/10/03 200 A 2003/10/03 100 C 2003/10/15 100 B 2003/10/15 300 C 2003/10/15 50 B 2003/10/15 60 求めているクエリーのイメージ: 2003/10/15 時点 ================================================ 名称 当日数量 当月数量 A 0 300 B 360 860 C 150 4150 ------------------------------------------------- 先日教えてもらったSQL文、希望のクエリーを作れないです。 -------------------------------------------------- select 名称, sum(AAA) as 当日数量, sum(BBB) as 当月数量 from ( select 名称, 0 as AAA, sum(数量) as BBB from W where 日付 >= #2003/10/01# and 日付 <= #2003/10/15# group by 名称 union select 名称, sum(数量) as AAA, 0 as BBB from W where 日付 = #2003/10/15# group by 名称 ) group by 名称; このSQL文は、2番目のSelectのところでエラーが出る (From句の構文エラーです) -------------------------------------------------- 後、Accessバージョンによって、SQL文が変わるでしょうか?当方は、Access97を使っている。 ご指導をお願いいたします。
- ベストアンサー
- Visual Basic
- SQL文を教えて下さい
VB2008、SQL Server で開発をしています。 下記の条件でデータを取得したいのですが、SQL文がうまくできず、困っています。 おわかりの方、教えてください。 仕様:得意先マスタ(得意先M)の全件と、売上テーブル(売上T)を読みます。 売上テーブルの商品コードの商品名を商品マスタ(商品M)より取得します。 得意先マスタの全得意先を取得する必要があります。 すべての得意先の売上データが存在するわけではありません。 ACCESS上でクエリを作成し、SQLビューにすると、こうなります。 inptSyoCD:画面から入力した商品コード 1,まず、クエリ1: SELECT 売上T.伝票日付, 売上T.伝票番号, 売上T.得意先コード, 売上T.明細区分, 売上T.商品コード, 商品M.商品名称 FROM 売上T LEFT JOIN 商品M 売上T.商品コード = 商品M.商品名 WHERE 売上T.明細区分=1 AND 売上T.商品コード= inptSyoCD ; 2,次に、実際に処理するSQL文: SELECT 得意先M.得意先コード, 得意先M.得意先名称, クエリ1.伝票日付, クエリ1.伝票番号, クエリ1.明細区分, クエリ1.商品コード, クエリ1.商品名 FROM 得意先M LEFT JOIN クエリ1 ON 得意先M.得意先コード = クエリ1.得意先コード ORDER BY 得意先M.得意先コード,売上T.伝票日付,売上T.商品コード; この2つをひとつのSQL文にする方法がわかりません。 よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- 売り上げ集計SQLが作れません
1つのTABLEに、1日の売上げ高を商品ごとに登録していくDBがあります。 簡単な構造は以下のとおりです。 日付 |A品売上額 |B品売上額 | 2008/11/01 |500000 |600000 | 2008/11/02 |450000 |800000 | 2008/11/03 |100000 |700000 | ・・・ 2008/11/30 |200000 |500000 | 2008/12/01 |300000 |100000 | <質問> それぞれの商品の1ヶ月売上高をSQLで抽出したいと思うのですが、Group byで何を指定したらいけるのかわからず困っています。 SQLで計算せずに抽出だけ行って、CGI側で計算するしかないのでしょうか? アドバイスお願いいたします。 <最初に考えたSQL(Group byがないためエラーになりました)> select sum(a),sum(b) from uriage where date between '2008/11/01' AND '2008/11/30';
- 締切済み
- PostgreSQL
- 重複するレコードを調べるSQL
重複するレコードを調べるSQL 初歩的な質問ですみません! 重複するレコードを調べるために以下のようなSQLを作ったのですが、 遅くて困っています。 もっと速くする方法があれば教えてください! 異なるカテゴリーでも商品コードが重複しているものがないかを探すSQLです。 SELECT A.商品コード, A.X, B.カテゴリー FROM (SELECT COUNT(商品コード) X, 商品コード FROM テーブルA WHERE 追加年月 = 201008 GROUP BY 商品コード) A, (SELECT 商品コード, カテゴリー FROM テーブルA WHERE 追加年月 = 201008 ) B " WHERE A.X >= 2 AND B.商品コード = A.商品コード
- ベストアンサー
- Oracle
- SQL文で表すには
以下の表を用いてSQL文を作成しようと思ってるんですが、途中までしか思いつかないので、どなたかご教授のほうよろしくお願いします。 shohin shiire 商品番号 商品名 単価 仕入番号 仕入先名 0001 みかん 100 001 A 0002 りんご 200 002 B 0003 ぶどう 300 003 C tran 購入番号 商品番号 仕入番号 数量 1 0001 001 1 2 0001 002 2 3 0001 003 3 4 0001 001 4 5 0001 002 5 6 0002 003 6 7 0002 001 7 8 0002 002 8 9 0003 003 9 10 0003 001 10 11 null 0004 20 これを以下のように出力するためにはどのようなSQL文を書けばよいですか? 商品番号 商品名 仕入番号 仕入先名 数量 単価 金額 0001 みかん 001 A 5 100 500 0001 みかん 002 B 7 100 700 0001 みかん 003 C 3 100 300 0002 りんご 001 A 7 200 1400 0002 りんご 002 B 8 200 1600 0002 りんご 003 C 6 200 1200 0003 ぶどう 001 A 10 300 3000 0003 ぶどう 003 B 9 300 2700 0004 null 004 null 20 null null ここまでは正しいと思うのですが・・・ select shohin.商品番号, shohin.商品名, shiire.仕入番号, tran.数量, shohin.単価, tran.数量 * shohin.単価 as 金額 よろしくお願いします。
- ベストアンサー
- Oracle
- GROUP BY句について
SQL_PLUSでの質問です。 以下のSELECT句があります。 GROUP BY句の『'A' AS 区分』は必要なのでしょうか。 ----------------------------- SELECT 商品コード AS 商品コード, 商品名 AS 商品名, 'A' AS 区分, SUM(金額) AS 金額 FROM 売上トラン GROUP BY 商品コード AS 商品コード, 商品名 AS 商品名, 'A' AS 区分; ----------------------------- 何気なくプログラムを見ていたら、目に留まりました。 このままでもコンパイルは通るので問題はないのですが、 決まった値を設定しているのだから、必要ないような気がするのです。 環境はWin2000 Oracle 9i です。 ご存知の方、教えて下さい。
- ベストアンサー
- Oracle
- ExcelにSQLの結果を表示
ExcelVBAにてSQLで取得した値を貼り付けたいのですが どのようにコードを記入すればいいんでしょうか? ネットで調べたら下記のような参考コードを見つけたのですが dim SQL as String dim rs As Recordset SQL = " SELECT SUM(フィールド名) AS 名前 FROM テーブル名 " Set rs = CurrentDb.OpenRecordset(SQL) この後 RANGE("A1")=rs としても種々のエラーが出ます? どうしたらよいでしょうか? よろしくお願いします
- ベストアンサー
- その他MS Office製品
- SQL2005 ストアドUPDATEについて教えてください。
SQL2005 ストアドUPDATEについて教えてください。 顧客マスタと、売上データがあり、顧客毎の売上データの売上金額の合計を 顧客マスタの累計金額にUPDATEする方法を教えてください。 顧客マスタ・・顧客コード、累計金額 売上データ・・売上日、顧客コード、売上金額 update 顧客マスタ set 累計金額=(select sum(B.売上金額) from 売データ as B where 売上日付>='2010/03/01' and 売上日付<='2010/06/30' group by B.顧客コード) from 顧客マスタ as A,売上データ as B where A.顧客コード=B.顧客コード サブクエリは複数の値を返しました。サブクエリが =、!=、<、<=、>、>= の後に続く場合や のエラーが出たり、期間中のすべての顧客の売上合計がセットされたり思うようになりません。 どなたか教えてください。 宜しくお願いします。
- ベストアンサー
- SQL Server
- 【SQL】group byについて
SELECT A.商品名 B.商品名 FORM A,B WHERE ((A.店コード IN (引数.店コード)) and (A.商品コード IN(引数.商品コード)) AND (A.店コード = C.店コード) AND ((A.商品コード = D.商品コード) AND (A.店コード = D.店コード)) というSQLに下記条件を追加したいのですが、集計関数の使用方法がわかりません。 SELECT Sum(金額) FROM Q WHERE Q.店コード = A.店コード AND Q.商品コード = A.商品コード GROUP BY Q.店コード, Q.商品コード Qテーブルは 店コード、商品コード、メニューコード がKEYなのですが、 店コードと商品コードだけで集計した値をSELECTしたいのです。 恐れ入りますが、ご教授頂けますよう宜しくお願いします。
- 締切済み
- Oracle
- 動的SQLでのDECODE
動的SQLでのDECODEがうまくいかず困っています。 SELECT DECODE(A.ROWID,NULL,'0','1') FROM A WHERE A.CODE = 9999 の様な感じのSQLを発行しているのですが、 戻ってくるI変数は1、V変数の中身はNULLとなっています。 どなたか対処法をご存じの方がいらっしゃいましたら教えてください。 よろしくお願いします。 ちなみに、DECODE指定しないとROWIDはちゃんと取得できますので、 対処方法はあると言えばあるのですが。。。 動作環境 OS :Red Hat Enterprise Linux AS release 3 Oracle:10g (10.1.0.2.0)
- 締切済み
- Oracle
お礼
ご回答ありがとうございます。 UNIONでできました。 アドバイスありがとうございました。