• ベストアンサー

AccessのSQL

arare2005の回答

  • ベストアンサー
  • arare2005
  • ベストアンサー率31% (63/199)
回答No.5

>クエリに対しては、上記のようなSQLが使えないのでしょうか? 元の日付データは、秒まである詳細なものなので、クエリで元々「Format(date,'yyyy-mm-dd') AS 日付」として出しています。 このクエリを使って、さらにクエリを作ろうとしたのですが。。。。 ・No.4さんのご指摘の通り普通に使えますよ。推測ですが、SQLでの型変換、不必要なリレーションシップ等を設定している為に、判断が出来なくなりエラーが出るのかもしれませんネ(^^; ・再度、ご回答があるかは別にしても、具体的なSQL文を貼り付け、何をどう抽出したいのかを具体的に記載されて方が良いですよ。判っている人からすれば、うまく抽出できる構文しか思いつきませんから。。。(^^; ・気づき…日付をあえてフォーマットし直さなくても、日付型で比較抽出されれば宜しいかと思います。 元々の設計でどうしようもないのかもしれませんが、この様な事を頻繁に行わなければならないのであれば、非効率な処理があちこちで発生します。 元々の日付を文字型8桁などにされた方が良いのかもしれません。 又、クエリをクエリで抽出すると、ご記載の通り不具合が出る事もあると思います。処理の効率化を考えて、一旦途中までのデータをワークDBにでも抽出し、そのDBからクエリを作成するのが良いかもしれませんネ。

ohnotellme
質問者

お礼

すっかりハマってしまいましたが、なんとかできました。 「グループ化や集計に関係のないフィールドを表示する」のが、普通はできないということが理解できておらず、そこにひっかかっていたようです。。。 ありがとうございました!

関連するQ&A

  • ACCESSでのSQL文

    ACCESS2000を使用しています。 クエリをデザインビューから作成し、SQLビューで確認すると、例えば、 SELECT [test].[日付],[test].[トップ] FROM test; というような文章が作成されますが、ここで手動でSQL文に SELECT 日付,トップ FROM test; というふうに変更して実行した場合、[]を外したことによってエラーとなってしまう列が発生します。このエラーになる列とならない列が発生する原因をどなたかご存知ないでしょうか? ACCESSをデータベースとして他ツールによってデータを引き出すんですが、SQL文は自動作成されるので手で[]を入力しなければならないんです。 以上、よろしくお願いします。

  • ACCESSのSQLで数値型に変換するには

    こんにちわ。今SQLの書き方が分からなくて大変困っております。 ACCESS2000で、テーブルが一つあるとします。 テーブルの内容は、氏名・点数の2項目だとします。 点数が50点より大きい人を抽出したいのですが、 項目は全てSTRING型にしないといけないため、 単純に比較できません。抽出した項目を数値型に 変換して、比較したいのですが、どのように書いたらいいのでしょうか。 SELECT  Shimei , CAST(Tensuu AS NUMERIC) FROM   Table1 WHERE   Tensuu > 50; このようなクエリを書いてみましたがエラーが出てしまいます。 ORACLEではTO_NUMBERなどの関数があると思うのですが、 ACCESSではどのようにしたらいいのでしょうか?? よろしくお願いします。

  • ACCESSのクエリ(SQLビューについて)

    こんにちはtmgmです。 ACCESSのクエリ(SQLビューについて)について質問です。"INSERT INTO TBL SELECT * FROM TBL1"というようなINSERT文をSQLビューに書き込んで実行することはできるんですが、これが複数行になるとどうしてもエラーが出てしまいます。ちなみに実行したい同じような文体のSQL文は100行近くあります。どうすればよいでしょうか?

  • Delphi SQL

    Delphi+InteBase 何がわからないのか、わかっていない状況です。 dbExpressのSQLConnection・SimpleDataSet、DataAccessのDataSource、DataControlsのDBGridを利用しています。 SimpleDataSetのDataset.CommandTextに「SELECT * FROM テーブル名」とかSQL文を書くことによって、希望のデータが表示されることまでは理解できました。 「SELECT MAX(ID) FROM テーブル名」など値を返す場合は、どのようにしたらよいのでしょうか? またCommandText:='DELETE FROM テーブル名'とすると、エラーにはなりますが、テーブルは空になっているのでtry文できりぬけています。 根本的にSQL文をどこに記述したらよいのかわかっていません。 どなたか、お助けを・・・

  • ACCESSのSQLの書き方

    ACCESSでのSQL文の書き方を教えてください。 テーブルtbl_Aとテーブルtbl_Bがあり, tbl_Aで得られた数値とtbl_Bで得られた数値を加えたものを結果として表示します。 どう書けばよろしいのでしょうか。どうしてもエラーになってしまいます。 イメージとしてはこんな感じです。 select (select ~~ from tbl_A where ~~)+(select ~~ from tbl_B where ~~) (もしoracleならば,「from dual」というのを最後に付けるんですが。)

  • これも「SQLの発行」している事になるのでしょうか

    accessの勉強をしていると、SQLの発行という言葉を良く見かけます。 しかし意味が良くわからないのでご教示いただきたいです。 -------------------------- SELECT テーブル1.* FROM テーブル1; -------------------------- 選択クエリとして、上記のSQL文を作り、保存し、 このクエリを開いただけでも 「SQLの発行」をした事になるのでしょうか? よろしくお願いいたします。

  • 動的SQL (その2)

    2008です。 有給休暇の使用日(複数)を文字列として、一つのフィールドに入れる 仕組みを作ろうとしています。 (4/1、6/20、6/21 8/30・・・・・てな感じです) 動的SQLでパラメータに値を代入する方法によって結果が変わってしまいます。 現象1 パラメータに代入(Set)するときに「'A0'」をセットすると正常に動きますが、 「(Select Max(コード) From テーブル Where コード='A0')」にすると パラメータの入力を求められます。 しかし後者をIf文の中で代入するとパラメータの入力は求められません(下記) if Select Max(コード) From テーブル Where コード='A0' = 'V0'   set @para = 'V0' else   begin   set @para = (Select Max(コード) From テーブル Where コード='A0')   end **********@paraを使う動的SQL*********** 現象2 上記のIf文でパラメータを代入後、動的SQLの直前に@paraの値を確認の為 テーブルに書き込む(Insert)と動的SQLの結果が無くなってしまいます。 動的SQLの後にも書込を入れてみましたが、同じ値が書き込まれています。 当然、直前の書込を無くせば正常に表示されます。 何とか動作するのですが納得できず、将来に禍根を残しそうな現象であり どうするべき(スルーするべき)か悶々としています。

  • グループ化したSQLの書き方について

    id,stpass,tokuten,branch,dateというフィールドをもつresultというテーブルを作成しました。 最高得点(フィールド名:tokuten)は、下記SQL(クエリーで作りました)でできます。 SELECT result.id, result.stpass, Max(result.tokuten) AS tokutenの最大 FROM result GROUP BY result.id, result.stpass; ただ、最高得点(Max(result.tokuten) AS tokutenの最大)を出したと同じレコードのそれ以外のフィールド(branch,date) を表示させるSQL(クエリー)がわかりません。 何方か、ご存知の方おられましたら、ご教授ください。

  • SQL文について

    こんにちは! 皆様に教えて欲しいことがあります。 DBの中のデータで、一番年齢が高い人の名前を取得してくるときってどんなSQL文を書けばいいんでしょうか? 一番高い年齢を取得、なら select Max(年齢) from DB でいいと思うんですけど、一番年齢の高い人の名前、となると、どうやってとってくるのかわかりません。 where文で「having max(年齢)」ってやったんですけど、エラーが出て実行できませんでした。 今作ってるSQL文は、DB二つから他の条件も含めてselectしているので、他の理由でエラーになってるのかもしれませんが・・・。 職場にSQLがわかる人がいないので、誰にも聞けません。 もしわかる方がいらっしゃいましたら、教えてください。 宜しくお願いします。

  • 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.にしちゃいましたが、間違ってるでしょうか?   宜しくお願い致します。