- 締切済み
テーブルの統合・日付別集計
Accessを使ってあるデータの送信履歴を記録しており 日付別の統計を取りたいと考えています。 AテーブルとBテーブルは以下のような構造をしています。 [id]項目ID(数値型) [senddate]日付を表すフィールド(日付/時刻型) [endflg]終了フラグ(数値型) endflg=1を条件にして Aテーブル・Bテーブルを統合した日付別統計をとるには どのようなSQL文を書けばよいのでしょうか?
- coffee_cafe
- お礼率57% (50/87)
- その他(データベース)
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- akikan0125
- ベストアンサー率33% (3/9)
SELECT DateValue([senddate]) AS 日付,COUNT(*) AS カウント FROM (SELECT * FROM Aテーブル where endflg = 1 UNION ALL SELECT * FROM Bテーブル where endflg = 1 ) GROUP BY DateValue([senddate]) でどうでしょう? また、ある特定の日を抽出したければ、 SELECT DateValue([senddate]) AS 日付,COUNT(*) AS カウント FROM (SELECT * FROM Aテーブル where endflg = 1 UNION ALL SELECT * FROM Bテーブル where endflg = 1 ) GROUP BY DateValue([senddate]) HAVING DateValue([senddate]) = #2003/10/10# でどうでしょうか?
- junijuni
- ベストアンサー率25% (12/48)
SELECT COUNT(*) FROM (SELECT * FROM Aテーブル where endflg = 1 UNION ALL SELECT * FROM Bテーブル where endflg = 1 ) WHERE senddate between '2003/10/10' AND '2003/10/11' などとすれば2003年10月10日分のカウントでませんか? between '2003/10/01' AND '2003/10/31' とすれば2003年10月分のカウント 0時0分0秒の扱いが…ちょっと問題あり 厳密にということであれば GROUP BY YEAR(senddate),MONTH(senddate),DAY(senddate) で日ごとのカウントがとれるでしょー
- akikan0125
- ベストアンサー率33% (3/9)
SELECT senddate,COUNT(*) FROM (SELECT * FROM Aテーブル where endflg = 1 UNION ALL SELECT * FROM Bテーブル where endflg = 1 ) GROUP BY senddate でどうでしょうか?
関連するQ&A
- SQLで二つのテーブルを統合したい
お世話になります。 Access2000のSQLで質問させて下さい。 下記のAとBのテーブルがある状態で、二つを統合した Cを生成したいのですが、どのようにSQLを作成したらよいでしょうか? お手数でもうしわけございませんが、SQL文で回答頂ければ助かります。 --テーブルA--- ID 名前 11 やまだ 12 さかもと --テーブルB--- ID 名前 25 きのした 26 つちや --C-- ID 名前 11 やまだ 12 さかもと 25 きのした 26 つちや
- ベストアンサー
- その他(プログラミング・開発)
- MySQLで別テーブルを参照し、レコードを消したい
お世話になります。MySQL4のデータベース上に2つのテーブルがあるのですが、 片方のテーブル(a)にあるフィールド(b_id)の値を参照し、もう片方のテーブル(b)のレコードを消していきたいのです。 具体的には以下のようなテーブル(a)とテーブル(b)があります。 TBL: a =========================== id b_id category =========================== 0 1 3 --------------------------- 1 2 1 --------------------------- 2 3 2 --------------------------- 3 4 2 --------------------------- TBL: b =========================== id name price =========================== 0 goodsA 1,000 --------------------------- 1 goodsB 500 --------------------------- 2 goodsC 250 --------------------------- 3 goodsD 2,500 --------------------------- 4 goodsE 1,800 --------------------------- やりたいことは、テーブル(a)の「category」フィールドが「2」以外であれば、 そのレコードの「b_id」にある数値を「id」にもつ、テーブル(b)のレコードを消していきたいのです。 上記の例だと、テーブル(a)のid「0」と「1」がcategoryに「2」以外を持っています。 この2つのレコードのb_idは「1」と「2」ですので、テーブル(b)のid「1」と「2」を消したいと思っています。 SQLについて知識がなく、困っています。どなたかご存知の方がいらっしゃいましたら、お知恵をお貸しください。 よろしくお願いします。
- 締切済み
- MySQL
- [MS Access]クエリで変換 hhmm(数値型)⇒hh:mm(日付/時刻型)
テーブル上で”930”や”1030”というように数値型になっているデータを、 クエリ上では”9:30”や”10:30”の日付/時刻型へ変換したいと考えております。 この場合、どのようなSQL文で記述をすればよろしいでしょうか? テーブルやフィールは下記のようになっております。 ■テーブル名 tbl_サンプルテーブル ■フィールド名 ID(オートナンバー型) 時刻(日付/時刻型)
- ベストアンサー
- その他MS Office製品
- 【SQL】日付の取得(ある日付を省いて指定日数を取得したい)
Aテーブルの日付フィールドを見て、引数の日付から過去7日間のデータを取得したいのですが、 その際に Bテーブルの日付と取得不可フラグを参照し、取得しようとしている日付(引数から過去7日間)に取得不可フラグ=1がたっていれば、Aテーブルの日付7日間のカウントに含めない としたいのですが、その判断を1回のSQLで取得することは可能でしょうか。 MINUSを使用しようとしましたが上手くいきませんでした。 お手数ですが、ご回答いただけますでしょうか。 宜しくお願いします。
- ベストアンサー
- Oracle
- 一つ前のレコードの値と減算して、別テーブルにUPdateする方法について
テーブル1のデータを計算してテーブル2を作成したいと考えております。 計算については"数値"を更新日付の一つ前の値と引き算してその結果をテーブル2に挿入したいと思ってます。 テーブル1 ID 数値 更新日付 001 23 2008/02/23 2:00:00 001 34 2008/02/23 3:00:00 001 50 2008/02/23 4:00:00 001 23 2008/02/23 5:00:00 002 25 2008/02/23 3:00:00 002 50 2008/02/23 4:00:00 002 70 2008/02/23 5:00:00 002 50 2008/02/23 6:00:00 結果 テーブル2 ID 数値 更新日付 001 11 2008/02/23 3:00:00 001 16 2008/02/23 4:00:00 001 -27 2008/02/23 5:00:00 002 25 2008/02/23 4:00:00 002 20 2008/02/23 5:00:00 002 -20 2008/02/23 6:00:00 一応考えたのですが SELECT * FROM テーブル1 AS a, テーブル1 AS b WHERE (((a.ID)=[b].[ID]) AND ((b.更新日付)=(select min(更新日付) from テーブル1 as b where a.更新日付 < b.更新日付))) ORDER BY a.ID, a.更新日付); として、aとbの数値を引き算しようと考えていますが、可能なのでしょうか? ぜんぜん別の方法でもいいので教えていただけないでしょうか? 以上 よろしくお願いいたします。
- 締切済み
- SQL Server
- 別のデータベースのテーブルの統合
SQL Server 2005 Express です。 データベースにあるデータテーブルを別のデータベースに統合できますか? 統合でなくても、移動でも構いません。 よろしくお願いします。
- ベストアンサー
- SQL Server
- 別のデータベースのテーブルの統合 No.2
SQL Server 2005 Express で、別のデータベースへのテーブルの移行するにあたり、 INSERT INTO データベースB.dbo.テーブルX SELECT * FROM データベースA.dbo.テーブルX とすればよいというご回答をいただいています。 で、 IDENTITYを設定しているテーブルがあるとちょっと工夫が必要です。 とのコメントをもいただきましたが、 この「工夫」が分かりません。 どんな方法なのでしょうか? IDENTITYをはずす方法や、リレーションシップをはずす方法などが思い浮かぶのですが、テーブル構造が複雑で、わけがわからなくなります。 元のIDの値は維持しなくてもよいので、何かよい方法はありますでしょうか? よろしくお願いします。
- ベストアンサー
- SQL Server
- ACCESS テーブル内の特定の文字の置換
お世話になっております。 Access2007+VBAについてになります。 フィールド内の特定の文字を置き換えたいのですが、どのようしたら良いでしょうか。 例えば・・・ テーブル_Aと、テーブルBがあります。 テーブルAには、フィールドCに抽出したいデータのIDが入っています。 テーブルBには、フィールドDに置換えたい日付が入っています。 フィールドDの日付は、『日付は2015-12-22です。』となっており、 フィールドCのIDと、テーブルBにあるフィールドEというIDがマッチしたフィールドDの日付を、『日付は、2015-12-23です。』に置き換えたいと思っています。 IDは、両方ともに、オートナンバー型ではありません。 色々試してみたのですが、全く分かりません。 是非、ご教授をお願い致します。
- ベストアンサー
- オフィス系ソフト
- SQL文でテーブルを作りたいのですが・・・
テーブルを作りたいのですが、思い描くテーブルが作れず、困っています・・・ 例えばMさんがA→B→C→Dと旅行に行ったとします。 そのとき、行った場所によって日付が登録されるようにしたいと思っています。 このように、別な人もいろいろと旅行し、それぞれの日付があり、どんどんと格納していきます。 最初に ID id 日付 date 場所 point (名前はとりあえず、IDとします) でテーブルを作ろうとしましたが、これだとID一つにつき、日付と場所も一つずつしか入りませんよね? どういったテーブルを作ればいいでしょうか? 思い描くテーブルは下記のような感じです。 ID 日付 場所 -------------- 1 |2010/10/06 | A |2010/10/14 | B |2010/10/20 | C |2010/10/25 | D -------------------------- 2 |2010/10/23 | B |2010/10/24 | A |2010/10/25 | D |2010/10/27 | C -------------------------- 3 |2010/10/25 | D |2010/10/27 | C |2010/11/03 | B |2010/11/04 | A |2010/11/07 | D |2010/11/10 | C ------------------------- 4 |2010/11/10 | B |2010/11/15 | A |2010/11/16 | D ・・・・・・・・・・・・・・・ このように一つのIDに対して、日付と場所がランダムの数で格納したいのですが、これって可能でしょうか? テーブルを2つ(以上)作り、外部キーを使ってもかまいません。 また、足りなければ違うIDなどでカバーしてもかまいません。 実際は、このようなテーブルを作り、一人毎の動線を調べるために活用したいと思っています。 Mさん:今日はAに行って、明日はBに行き、明後日はCに行った。すなわち動線は・・・のような感じです。 SQL文でテーブルを作ってください。 補足事項等ありましたらご指摘下さい。追加いたします。 よろしくお願いします。
- ベストアンサー
- MySQL
- Access 2003 日付の表示について
クエリ作成にて 集計する→日付をグループ化する→月を選択しました。 日付 を月でグループ化: Format$([テーブル1].[日付],'mmmm yyyy') となり、表示が February 2010となります。 これを平成22年 2月と表示したいのですが、mmmm yyyyをggge年 m月と変更すると、クエリ式'(Sumテーブル1.量1)'の構文エラー:演算子がありません。となり変更できません。 テーブル構造は フィールド名 データ型 id オートナンバー 日付 日付/時刻型 機械番号 数値型 材質 テキスト型 量1 数値型 量2 数値型 情報が不足していれば追記いたします。
- ベストアンサー
- その他MS Office製品
お礼
ありがとうございます。 UNION ALLで繋げることができるのですね。 ちなみにsenddateが日付/時刻型なので これだと日付別の統計でなく時刻まで含んだグルーピングになってしまうのですが 日付に直すには、また○月分というように月を条件に日付別集計にするには どうしたら良いのでしょうか?