SQL文の書き方を教えてください
- SQL文の書き方を教えてください。先日この問題で投稿しましたが、未完成のため、再度要望を整理し、ご指導をお願いいたします。
- 先日教えてもらったSQL文、希望のクエリーを作れないです。このSQL文は、2番目のSelectのところでエラーが出ます。
- Accessバージョンによって、SQL文が変わるでしょうか?当方は、Access97を使っています。ご指導をお願いいたします。
- ベストアンサー
- すぐに回答を!
【再】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を使っている。 ご指導をお願いいたします。
- Sikabu
- お礼率57% (40/70)
- Visual Basic
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Accessではユニオンクエリを集計する事は出来ない(内側のselect文の結果を外側のselect文のfrom句に指定できない)ので、クエリを2つに分割して集計して下さい。 以下のユニオンクエリを「Q1」として保存します。 -------------------------------------------------- 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 名称 -------------------------------------------------- 次に、以下のクエリを作り、当日と当月が1レコードになるように集計します。これが求めたい結果になります。 -------------------------------------------------- SELECT Q1.名称, Sum(Q1.AAA) AS 当日数量, Sum(Q1.BBB) AS 当月数量 FROM Q1 GROUP BY Q1.名称; --------------------------------------------------
関連するQ&A
- SQL文を教えてください
先日SQL文のことです、 tabelC:IDの中分類、IDの中分類名称 があって、以下のSQL文にリレーションを作りたいです: SELECT Mid(tableA.ID,4,2) AS IDの中分類, Sum(tableA.数量) AS 数量の合計 FROM tableA GROUP BY Mid(tableA.ID,4,2); 用は、IDの中分類名称、数量の合計を求めたいです。 ご指導をお願いいたします。
- ベストアンサー
- Visual Basic
- SQL文に関するとある問題について
SQL文に関するとある問題について (3) 次の出庫記録の表に対して、以下のSQL文を実行したときに得られる値が 最も大きな数が得られるものは何ですか? 該当する記号を書いてください。 --------------------------------------------------------------- 商品番号 数量 日付 PRT145 4 20090610 DP255 2 20090610 DP266 3 20090611 PRT255 2 20090611 a SELECT MAX(数量) FROM 出庫記録 b SELECT AVG(数量) FROM 出庫記録 WHERE 日付='20090610' c SELECT COUNT(*) FROM 出庫記録 d SELECT SUM(数量) FROM 出庫記録 WHERE 日付='20090611' ------------------------------------------------------------ この場合、それぞれの選択肢が出す数字は a=1 b=3 c=4 d=5 なので、正解はdでいいんでしょうか? aのMAXって、最大なのはPRT145の数量4ですが、a=に4をいれるべきか、それともMAXなのはPRT145一つだけなので1にすべきか、まずそこで躓きました。 bのAVGは4+2=6なので、それの半分の3かな? cはそのまんま4にして dはSUMなんで、3+2=5.にしちゃいましたが、間違ってるでしょうか? 宜しくお願い致します。
- ベストアンサー
- SQL Server
- 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 どのように変更を加えれば、上記の「抽出結果」にできるのでしょうか? よろしくお願いいたします。
- ベストアンサー
- SQL Server
- 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.商品名 ************************************************* よろしくお願いします。
- 締切済み
- Oracle
- (2)-SQL文の書き方を教えてください。
table項目:名称、日付、数量。 以上のtabelから以下のクエリーをつくりたいです: クエリー項目:名称、当日数量、当月数量。 日付の値は、フォーム上で指定する。 具体的に:フォーム上日付欄に2003/10/01と2003/10/30を指定し、実行すると、当日数量は、2003/10/30その日の合計数が出る。当月数量に指定された10/01から10/30までの数字の合計がでる。 今、片方だけ条件のSQL文を書けるですが、二つ条件のSQL文がとても難しい。 そうゆうSQL文を教えていただけませんか? よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- SQL分の作り方
以下のようなテーブルがあります name point date A 1 2014/1/1 B 2 2014/1/1 C 3 2014/1/1 A 1 2014/2/1 B 3 2014/2/1 C 2 2014/2/1 A 2 2014/3/1 B 4 2014/3/1 C 3 2014/3/1 上記のテーブルを name point(2014/1) point(2014/2) point(2014/3) A 1 1 2 B 2 3 4 C 3 2 3 というように並べるにはどのようなSQLを打てばよいでしょうか。 以下のようなSQLを打ってみたらデータ量が多いときになかなか応答が帰ってきません。 SELECT name, ifnull(sum(CASE WHEN date = '2014-01-01' THEN point END),'-') as point(2014/1),ifnull(sum(CASE WHEN date = '2014-02-01' THEN point END),'-') as point(2014/2),ifnull(sum(CASE WHEN date like '2014-03-01' THEN point END),'-') as point(2014/3) FROM tableA GROUP BY name
- 締切済み
- MySQL
- SQL(SELECT文)を教えてください
SQL Serverを勉強中です。 以下のようなテーブルに、同一の日付に複数の名称・値のセットが存在します。 Date(日付) Name(名称) Value(値) 20130101 a 10 20130101 b 20 20130101 c 30 20130202 a 5 20130202 b 10 20130202 c 15 このデータを、SQLのSELECT文で取得し、以下のような表を作りたいと考えています。 a b c 20130101 10 20 30 20130202 5 10 15 行が日付、列が名称になっています。 このように取得できるSQL文を教えてください。よろしくお願いします。
- ベストアンサー
- SQL Server
- SQL文でデータを抽出できない。
現行のSQL文でACCESSからデータを抽出してきていたのですが、それでは問題が起きてしまったので、以下の内容にSQLを変更したいのですが、思うようにできません。 詳しい方がいましたらご教授願います。 お手数ですが、困っているのでよろしくお願いいたします。 *現行のSQL* 日付が最も若いものでかつ、IDとSUBJECTに重複のない データを抽出する。 "SELECT .sID,B.subject,B.D_time FROM (SELECT sID,Min(D_time) AS mtime ,subject FROM Reg1Data GROUP BY sID,subject) A INNER JOIN Reg1Data B ON A.sID=B.sID AND A.mtime=B.D_time GROUP BY B.sID,B.subject,B.D_time ORDER BY B.sID,B.subject;" *変更したいSQL* ある範囲の日付の中で(日付は、入力画面から抽出)日付が最も若いものでかつ、IDとSUBJECTに重複のないデータを抽出する。 "SELECT .sID,B.subject,B.D_time FROM (SELECT sID,Min(D_time) AS mtime ,subject FROM Reg1Data WHERE D_time <= & w_jyukobistart GROUP BY sID,subject) A INNER JOIN Reg1Data B ON A.sID=B.sID AND A.mtime=B.D_time GROUP BY B.sID,B.subject,B.D_time ORDER BY B.sID,B.subject;" 以上を実行すると、 [Microsoft][ODBC Microsoft Access Driver] クエリ式 'D_time <= & w_jyukobistart' の 構文エラー : 演算子がありません。 というエラーが出ます。 ちなみにw_jyukobistart はWEBの画面上に入力された抽出したいデータ範囲(from)です。 この変数の使い方に問題があるのか、それともSQL文自体に無理があるのか、最も良い方法をお尻の技術者の方、お答えいただけるとうれしいです。
- ベストアンサー
- その他(プログラミング・開発)
- 売り上げ集計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
お礼
ご回答をいただき、どうもありがとうございます。大変助かりました。またよろしくお願いいたします。