質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

293閲覧

サブクエリからsumフィールドのみを抜き出したい

yuu789

総合スコア14

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2018/04/20 08:45

編集2018/04/20 09:06

お世話になっております。

from句にサブクエリをつくり、それを一部抽出しようとしたのですがエラーになってしまい、原因がどうしても分かりません。

しようとしたこととしては

例えば、次のようなテーブルがあります。
コード|年月日|年月日  時刻             |商品列|売上高

111  |2018/01/01 |2018/01/01  11:05:00|A|100
112  |2018/01/01 |2018/01/01  11:05:10|A|200
113  |2018/01/01 |2018/01/01  14:05:00|A|300
114  |2018/01/01 |2018/01/01  16:05:00|B|200
115|2018/01/02|2018/01/02  12:05:00|A|200
116  |2018/01/02 |2018/01/02  23:05:00|A|100

・・
これを以下のように年月日 、商品列、番号でグループ化し、売上高の合計を売れていった時間ごとに求めようと考えています。

商品コード|年月日  時刻             |商品列|番号|売上高|売上累計
111    |2018/01/01  11:05:00|A|1|100|100
112 |2018/01/01  11:05:10|A|2|200|300
113|2018/01/01  14:05:00|A|3|300|600
114 |2018/01/01  16:05:00|B|1|200|200
115 |2018/01/02  12:05:00|A|1|200|200
116|2018/01/02  23:05:00|A|2|100|300

そして上記のデータを出すsqlは教えていただき、無事に出すことができました。本当にありがとうございます。

今度は元々のコードなどがあるテーブルに最後の累計売上高のみをupdateしようと考えています。
とりあえず以下のような形のデータが出るようにupdateは省いた、累計売上高を抽出するsqlのみを考えました。

売上累計
100
300
600
200
200
300

そして下のようなsqlを作成しました。(sumの中で少し場合分けのようなことがしたいため、sum(iif〜という形にしました))

SELECT sum(t2.売上累計)
WHERE
t1.年月日 = t2.年月日 AND t1.番号 = t2.番号
AND t2.[年月日 時刻] <= t1.[年月日 時刻]) AS 累計
FROM
(SELECT Sum(iif〜) as 売上累計,Atabl.商品列,Atabl.番号
FROM table
GROUP BY Atabl.商品列,Atabl.番号)AS t1,(SELECT Sum(t2.売上累計) from SELECT Sum(iif〜) as 売上累計,Atabl.商品列,Atabl.番号
FROM Atabl
GROUP BY Atabl.商品列,Atabl.番号) as t2

ですが、
「SELECT sum(t2.売上累計)
WHERE
t1.年月日 = t2.年月日 AND t1.番号 = t2.番号
AND t2.[年月日 時刻] <= t1.[年月日 時刻])」の構文エラー:演算子がありません。」

という表示が出てきてしまいます。

どのようにすれば良いのでしょうか?

ご指南のほど、どうかよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

エラーは、select の次にwhere条件となっていてfrom句がありません。
内容は別として、以下のような記述になります

SQL

1SELECT sum(t2.売上累計) 2FROM ( 3 SELECT Sum(iif〜) as 売上累計,Atabl.商品列,Btabl.番号 4 FROM Atabl INNER JOIN Btabl ON Atabl.コード = Btabl.コード 5 GROUP BY Atabl.商品列,Btabl.番号 6 )AS t1 7 , ( 8 SELECT Sum(iif〜) as 売上累計,Atabl.商品列,Btabl.番号 9 FROM A.tabl INNER JOIN B.tabl ON A.tabl.コード = B.tabl.コード 10 GROUP BY Atabl.商品列,Btabl.番号 11 ) as t2 12WHERE t1.年月日 = t2.年月日 AND t1.番号 = t2.番号 13 AND t2.[年月日 時刻] <= t1.[年月日 時刻]) AS 累計

尚、更新クエリーは更新可能なクエリーである必要があります。
その場合、上記クエリーを元にテーブル作成クエリーにし、作成されたテーブルを元にすれば大体更新可能になります。
(何れにせよ更新対象のテーブルキーをクエリーに含んでおく必要があります)

投稿2018/04/20 09:12

編集2018/04/20 09:32
sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuu789

2018/04/20 10:01

そうなのですね!いつもためになることを教えていただき本当にありがとうございます!! from句・・本当ですね・・汗 自分では全く気づけなかったです汗汗 ありがとうございます(^^)少し状況が変わってしまい、今すぐパソコンで打ち込むことができないのですが、後でsqlと教えていただいたこと、やってみますね! ありがとうございます!
guest

0

ごめんなさい、書き間違えていたので少し修正しました。

投稿2018/04/20 08:47

編集2018/04/20 08:55
yuu789

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問