• 締切済み

グループ化した個別の件数の取得方法

VB2005 Accessで開発をしています 以下のようなテーブルがあります。 予約テーブル 日付   時間  名前 2007/12/25 10:00 鈴木 2007/12/25 10:00 青木 2007/12/25 11:00 田中 2007/12/25 11:00 佐藤 2007/12/25 11:00 加藤 2007/12/26 10:00 鈴木 2007/12/26 10:00 青木 このテーブルを日付と時間でグループ化した内訳の件数を取得するにはどのようにすればよいのでしょうか? 2007/12/25 10:00 2件 2007/12/25 11:00 3件 2007/12/26 10:00 2件 現在のコード SELECT 予約日,予約時間,count(*) FROM 予約クエリー WHERE 予約日 BETWEEN #2007/12/25# And #2007/12/26# group BY 予約日,予約時間 とやっていますが、うまくいきません。 ご教授お願いします

みんなの回答

  • venzou
  • ベストアンサー率71% (311/435)
回答No.3

確認させて下さい。 VBからADO(又はDAO)を使って、Accessのデータを開いていますか? テーブル構造は下記のような感じでしょうか? テーブル名  予約テーブル フィールド名  日付 (日付/時間型に日付のみ入力)  時間 (日付/時間型に時間のみ入力)  名前 (文字列型) ------------------------------------------------------------ 質問のSQL文では、「予約クエリー」「予約日」「予約時間」と なっていますが、これは別のクエリーですよね? このクエリーの内容は? ------------------------------------------------------------ 例えば、「予約クエリー」の内容が、下記であれば、 質問のSQL文で、問題なく集計されると思います。 SELECT 予約テーブル.日付 AS 予約日, 予約テーブル.時間 AS 予約時間 FROM 予約テーブル; SQL文は問題ないと思います。その他の部分に原因があるのでは? 補足: 強いて問題点を挙げれば、count(*)に別名を付けていない点。 名前が分からなくても、インデックス番号で参照出来ますが、 付けておく方が無難だと思います。 例: count(*) AS 件数 ------------------------------------------------------------ >とやっていますが、うまくいきません。 うまくいかないとは? もう少し具体的に説明をお願いします。 出来れば、該当部分のソースなど補足して頂ければ、 正確な回答が得られやすいと思いますよ。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

日付と時刻は一続きのものです 個別に比較したのでは正しい結果は得られません SELECT Max(日付) AS 日付の最大, Max(時間) AS 時間の最大, Count(*) AS カウント FROM 予約クエリー where 日付 Between #12/25/2007# And #12/26/2007# GROUP BY [日付]+[時間]

  • tomo316
  • ベストアンサー率35% (51/142)
回答No.1

SELECT 予約テーブル.日付, 予約テーブル.時間, Count(*) & "件" AS 件数 FROM 予約テーブル WHERE (((予約テーブル.日付) Between #12/25/2007# And #12/26/2007#)) GROUP BY 予約テーブル.日付, 予約テーブル.時間;

関連するQ&A

  • 1個のSQL分で2種類以上の件数値を取得する

    SQL分の記述で質問なんですが、 データベース上に日付、時間、フラグと言う項目があります。 同一の日付、時間のものは数件ずつあります。 フラグは"b"と"1"があります。 このデータの日付・時間辺りの件数と+フラグが"1"の件数を同時に取得するSQL分はかけますでしょうか? 別々ならば、 SELECT DATE,TIME,COUNT(*) AS KENSU1 FROM W_TABLE GROUP BY DATE,TIME ORDER BY DATE,TIME と SELECT DATE,TIME,COUNT(*) AS KENSU2 FROM W_TABLE WHERE FLG="1" GROUP BY DATE,TIME ORDER BY DATE,TIME でかけると思うのですが、 1個のSQL分で記述は可能でしょうか? 処理結果を 05/02/23 12:00 10 5 05/02/24 10:00 12 3 (日付・時間・件数・フラグ="1"の件数  見たいに取得したいのですが..

  • SQL 件数取得を速くしたい

    SQLでテーブルなどからSELECTされた件数を得る際に、 select count(*) from ~ 等とするかと思いますが、この結果が返ってくるのが遅くて困っています。 少しでも速く件数を得たいのですがどのような方法がありますでしょうか? 教えてください。 私が使っている環境はOracle 8iで 特に今回はgroup byを含むビューからの検索を行おうとしています。

  • Excel2003 関数を教えてください

    Excel2003にて作業しております。 ワークシートが県毎に分かれており、以下のような入力をしております。 北海道(シート1) A   B  C   D   E   F ―――――――――――――― No. 件数 ・・・ 担当  日付  ・・・ 1   60  ・・・ 佐藤   6/2  ・・・ 2   40  ・・・ 鈴木   6/6  ・・・ 3   70  ・・・ 佐藤   6/5  ・・・ 4   50  ・・・ 田中   6/6  ・・・ 青森県(シート2) A   B  C   D   E   F ―――――――――――――― No. 件数 ・・・ 担当  日付  ・・・ 1   30  ・・・ 加藤   6/3  ・・・ 2   20  ・・・ 田中   6/4  ・・・ 3   50  ・・・ 佐藤   6/3  ・・・ 4   10  ・・・ 田中   6/4  ・・・ 各担当者の合計件数・日付などを知りたいのですが、何かよい関数はないでしょうか? 以下のように担当者毎に別シートへ反映できれば理想的です。 A   B  C   D   E   F ―――――――――――――― No. 件数 ・・・ 担当  日付  ・・・ 1   60  ・・・ 佐藤   6/2  ・・・ 3   70  ・・・ 佐藤   6/5  ・・・ 3   50  ・・・ 佐藤   6/3  ・・・ できなければ各担当者の合計件数だけでも出したいのです。 ご教示ください。よろしくお願いいたします。

  • SQL GROUPで件数の一番多いレコードのみ取る

    SQL GROUPで件数の一番多いレコードのみ取る ORACLE10です。 次のようなテーブルがあります。 USER -----------テーブル名 ID,NAME,DATA----列名 1,A,any 1,A,any 1,B,any 2,C,any 3,D,any このテーブルから、IDをGROUPにして、さらに、一番使用頻度の多いNAMEを取得したいのです。 表示したいのは、IDとNAMEです。 つまり、取得結果例は次のようになります。 取得結果例 ID,NAME----列名 1,A 2,C 3,D SQL文をどのように作れば可能でしょうか? ちなみに、IDやNAMEのマスタテーブルはありません。 自分では、「(select ID, NAME, count(*) from USER group by ID, NAME) COUNT」で、COUNTを内部テーブルにして、グループ内で一番多いcount(*)をmaxで取得してみようかと思ったんですが、そこからアイデアが出ませんでした。

  • テーブルの結合・・・

    教室テーブル id, class 1, A組 2, B組 3, C組 生徒テーブル id, name 1, 佐藤 1, 山田 2, 鈴木 3, 田中 3, 後藤 3, 加藤 という二つのテーブルがあります。 これらをLEFT JOINで結合したのですが。 A組, 佐藤 A組, 山田 B組, 鈴木 C組, 田中 C組, 後藤 C組, 加藤 となってしまいます。 これを同じ教室名でまとめて、 A組, 佐藤 山田 B組, 鈴木 C組, 田中 後藤 加藤 というように表示したいのです。 できればクエリだけで解決したいのですが・・・ よろしくお願いします。

    • ベストアンサー
    • MySQL
  • GROUP BYを使ったSELECT文の総件数を求める方法

    【表A】 列1 | 列2  ----------- 山田 | A 山田 | A 田中 | A 田中 | B 田中 | C 木村 | A 木村 | A 木村 | B 上記で列1・列2をグループ化した件数を求めたいのですが、Oracleだと   SELECT COUNT(*) FROM (SELECT 列1,列2 FROM 表A GROUP BY 列1,列2) というSQL文で結果「6」が出力されますが、SQLServerではエラーとなってしまいます。 SQLServerで実現したい場合はどのように記述すればよろしいでしょうか?

  • X個グループからY個ずつデータを抽出したい

    例:グループの数は100ぐらいがあって、グループごとのレコード数はそれぞれであり、毎回そのうちのX(例3)グループずつにデータを抽出します。そして1つのグループから最大Y個(例2)のデータを抽出します。 抽出したデータにフラグを立てて、次の抽出時に除外の条件として使います。 例:以下のテーブルがあって、毎回3グループから2個のデータを抽出します: group name flag ---------------------------------------------------------------------------- 1_group 田中A          0     1_group 佐藤A          0     1_group 林A           0     1_group 鈴木A           0     1_group 牧野A           0     2_group 平田B          0     2_group 小林B          0     ・・・ 3_group 高橋C          0     3_group 丹羽C          0     3_group 田中C          0     3_group 佐藤C          0     3_group 鈴木C          0     3_group 吉田C          0     ・・・ 4_group 高橋D          0     4_group 丹羽D          0     4_group 田中D          0     4_group 佐藤D          0     4_group 鈴木D          0     ・・・ (1)1回目の抽出の結果 group name flag ---------------------------------------------------------------------------- 1_group 田中A          0     1_group 佐藤A          0     2_group 平田B          0     2_group 小林B          0     3_group 高橋C          0     3_group 丹羽C          0     (2)2回目の抽出の結果 group name flag ---------------------------------------------------------------------------- 1_group 林A           0     1_group 鈴木A           0     3_group 田中C          0     3_group 佐藤C          0     4_group 高橋D          0     4_group 丹羽D          0     (3)3回目の抽出の結果 group name flag ---------------------------------------------------------------------------- 1_group 牧野A           0     3_group 鈴木C          0     3_group 吉田C          0     4_group 田中D          0     4_group 佐藤D          0     DBはSqlLiteです。 長いですが、ご教授頂ければ、ありがたいです

  • テーブルのレコード件数取得について

    はじめまして。 postgresの「テーブルのレコード件数取得」について教えてください。 何も考えずに select count(*) from tblA; というSQLの記述をしていたのですが、レコード件数が30万件を超えた あたりから、結果が戻るまでに4~5秒もかかるようになりました。 もっと効率の良い(=短い時間)検索方法はあるのでしょうか? ちなみに postgres+C+PC-Soralis の組みあわせです。 マシンはPen4-2Ghz メモリーは512MBです。

  • 名寄せして件数を取得する事は可能でしょうか?

    リスト化した文字列が含まれているレコードをグループ化し、 件数を表示したいのですが・・ select nayose,count(*) from test where name like '%田%' だと、田が含まれる件数しか取得できず・・ 例えば、以下のようなnayose_listテーブルがあった場合、 nayose_listの漢字を含む件数を取得できないでしょうか? nayose_list 田 人 一

    • ベストアンサー
    • MySQL
  • テーブル結合方法について

    MySQL5.1で、Table a ,Table b から、Table cのように取り出したいのですが、 SQLでSELECTする方法がわかりません。 Table b優先だけど、Table aにしかデータがない場合もあるといった感じです。 Table a No  Name 1 加藤 2 佐藤 3 田中 Table b No Name 2 佐藤先輩 4 田辺先輩 Table c No Name 1 加藤 2 佐藤先輩 3 田中 4 田辺先輩 どうか、よろしくお願いします。

    • ベストアンサー
    • MySQL