• 締切済み

SQLクエリの記述について

使用しているSQLサーバはSQL Server 2008になります。 5/23に1回目プログラムを実行したとき、下記の例に記載した実行日時が2015-05-23 01:59:08から2015-05-23 02:02:05のレコードが作成され、 5/23に2回目プログラムを実行したときに下記の例に記載した実行日時が2015-05-23 10:59:15から2015-05-23 11:03:09のレコードが作成されます。 クエリで取り出したいレコードは2回目のプログラムを実行したときのレコードつまり、最後にプログラムを実行したときのレコードを取り出したいと考えています。 取り出したいレコードの件数は4件になり、それを行うには恐らく、@@ROWCOUNTの使用が必要と考えています。 列名「実行日時」の型はdatetime型になります。 この場合、どのようなクエリを作成すれば、実現できるかご教示頂けますでしょうか。 ------------------------------------ 親番号 子番号 実行日時 1 1 2015-05-23 10:59:15 1 2 2015-05-23 11:01:10 2 1 2015-05-23 11:02:17 2 2 2015-05-23 11:03:09 1 1 2015-05-23 01:59:08 1 2 2015-05-23 02:00:01 2 1 2015-05-23 02:01:02 2 2 2015-05-23 02:02:05 ------------------------------------

noname#242248
noname#242248

みんなの回答

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.2

>datetime型の場合の条件の書き方がわからず、困っております。 SELECT TOP (4) * FROM XXX WHERE (実行日時 >= CONVERT(DATETIME, 2015/5/22 10:59:01', 102)) ORDER BY 実行日時 DESC 単純にそれ以上で取ればよいと思います。

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.1

やりたいこととこのシステムがよくわかりませんが、通常は処理のJOB番号を記録するものですがそれはないのですね。で、必ず4レコードのログなのですか。であれば日付を降順のソートして4件だけ抜き出せばよいのでは? つまり SELECT TOP 4 * FORM テーブル ORDER BY 実行日時 ASC ですよね。

noname#242248
質問者

補足

ありがとうございます。 レコードの列に「ジョブ番号」があって、ジョブを実行するたび、ジョブ番号が書き込まれていれば、 それで抽出も考えていましたが、残念ながらありませんでした。 実際は、1回実行するたび、1066レコード作られ、降順に並べ替えする必要があるので下記で試してみます。 -------------------------------------------------------- SELECT TOP 1066 * FORM テーブル ORDER BY 実行日時 DESC -------------------------------------------------------- もう1点教えて頂きたい点があるのですが、下記のレコードの中から、2015/5/22 10:59:01から2015/5/22 11:02:05の4レコードを取り出す場合はどうしたらよいでしょうか。 where句を使用すると思うのですが、datetime型の場合の条件の書き方がわからず、困っております。 ------------------------------------ 親番号 子番号 実行日時 1 1 2015-05-23 10:59:15 1 2 2015-05-23 11:01:10 2 1 2015-05-23 11:02:17 2 2 2015-05-23 11:03:09 1 1 2015-05-23 01:59:08 1 2 2015-05-23 02:00:01 2 1 2015-05-23 02:01:02 2 2 2015-05-23 02:02:05 1 1 2015-05-22 11:02:05 1 2 2015-05-22 11:01:03 2 1 2015-05-22 11:00:04 2 2 2015-05-22 10:59:01 1 1 2015-05-22 02:59:01 1 2 2015-05-22 02:58:03 2 1 2015-05-22 02:57:01 2 2 2015-05-22 02:55:02 ------------------------------------

関連するQ&A

  • MS SQL Serverでのクエリ文

    MS SQL2005 の”SQL Server Management Studio”を使って下のクエリーを実行します。 例1は実行できますが、例2は実行できません。 なぜでしょうか? 例1 select * from [test].[dbo].[test_table] 例2 select * from ('[test].[dbo]' + '.[test_table]')

  • SQL Server2008のクエリの書式に関する

    SQL Server2008のクエリの書式に関する質問です。 異なるテーブルを結合をする際の列名は、以下のようにピリオドを使って表現します。 <テーブル名>.<列名> これは、皆さん当然のように使われていると思います。 ここから質問ですが・・・。 異なるデータベースのテーブルを結合させる場合は、どうすればよいですか? <データベース名>.<テーブル名>.<列名>とするのでしょうか?(やってみたが、うまくいかなかったような気が・・・。) そもそも、異なるデータベース間では、テーブル結合できないのでしょうか? ご指導よろしくお願いいたします。

  • 抽出クエリについて

    <環境> SQL Server 2005 クエリについて教えてください。 下記の<TBL>から<SQL1>を実行し直近の収納日を取得します。(☆印のデータ) <SQL1> SELECT 個人番号, Max(収納日) FROM TBL GROUP BY 個人番号 この時、<SQL1>で取得したレコードの"年月"、"区分"フィールドの値を取得するには どうすればよいでしょうか? LOOPで取得するのではなく、1本のSQL文で取得できないかと思っています。 どなたかご教授お願いします。 <TBL> 個人番号  年月    収納日   区分 00000001  2009/04  2009/04/01  1 00000001  2009/05  2009/05/01  2 00000001  2009/06  2009/06/01  3 ☆ 00000002  2009/04  2009/04/01  4 00000002  2009/05  2009/05/01  5 00000002  2009/06  2009/06/01  6 00000002  2009/07  2009/07/01  7 ☆

  • SQLを発行とは?クエリの作成とは違うのですか?

    SQLを発行とは?クエリの作成とは違うのですか? アクセスしかわからない者です。 (SQLServerは無知) SQLを発行とか実行とかの言葉をよく目にしますが アクセスでテーブルを元に選択クエリを作成するのは 俗に言う「SQLを発行」でしょうか?

  • sqlのクエリについて

    C#からデータベースsql server 2008にデータセット、データリードする簡単なアプリを作りました sqlのクエリについて質問です リードしたデータのTOP行と最終行の2つのレコードを取得する場合どうすればいいでしょうか? select TOP A,B,C From test WHERE なら TOP行のみになってしまいます 最終行のレコードの取得方法は、いい方法が思い浮かびません。 欲しいのは、TOP行と最終行の2行のみなので、困ってしまいました。 知恵をお借り願えればと思います。 よろしくお願いいたします。

  • accessクエリの「SQL」を検索する方法

    accessクエリの中の 「select * form *****」 の中の文字列検索を複数のクエリを対象として実行できるようなソフトまたは 複数のクエリのSQLをテキスト化してくれるようなソフトはあるものでしょうか。 #クエリの結果のレコードの検索でなく、SQLの文字列を検索したいだけ。

  • SQLサーバーのテーブルに対してアクセスで更新クエリを行ないたい

    こんばんは。 ・vista ・アクセス2003 ・SQL Server 2005 です。 SQL ServerからテーブルをMDBへリンクしているのですが そのテーブルに対し、アクセス側で更新クエリを実行しようとすると 実行時エラー '3157': ODBC--リンク テーブル'テーブル名'での更新に失敗しました。 [Microsoft][ODBC SQL Server Driver]時間切れになりました。(#0) と言うエラーになり、更新クエリができません。 どうすればアクセスでSQLサーバーのテーブルに対して更新クエリを行えるのでしょうか? よろしくお願いします。

  • パラメータクエリを一つにまとめたい

    クエリ1を基にフォーム1を作成、 クエリ2を基にフォーム2を作成、 クエリ1も2もパラメータクエリを使用していて フィールド名は「番号」データ型はテキスト型です。 そして新規にフォーム3を作成しフォーム1とフォーム2をドラッグしました。 この状態でフォーム3をダブルクリックすると パラメータの入力を2回求められますがどちらも同じ番号を入力しています。 (「001」などを2回入力) これを1回にすることは可能でしょうか? ・番号フィールドの基テーブルはクエリ1と2は違うテーブルです。 ・クエリ1と2は一つにまとめたくありません。 フォーム3上に別々に表示させたいです。 ・クエリ1には全ての番号がありますがクエリ2には抜けている番号があります。 「クエリ1の全レコードとクエリ2の同じ結合フィールドのレコードだけを含める。」で全ての番号を表示できる状態です。 説明が下手ですいません。 アドバイスお願い致します。

  • php中のSQLの記述について

    こんにちは。 いつもお世話になっています。 PHPでSQLを使ったプログラミングをする場合のSQLの記述方法についてお尋ねしたいです。 以下3つのような書き方をしているプログラムを見かける事があり、それぞれ利点などもあると思うのですが、みなさん的にはどの書き方がわかりやすいかお返事頂ければ嬉しいです。 また他にも良い書き方などがあれば紹介して頂けると嬉しいです。 1.メインプログラム中にSQLをそのまま記述 2.SQL+SQL実行までをfunctionやclassにまとめ別ファイルとし、メインプログラムから呼び出す 3.複数のSQLを1つの別ファイル中で変数定義し、メインプログラムからそれらのファイルをrequireし、SQL実行時にはその変数を利用 4.1つのSQL毎に1ファイルを作成し、メインプログラムからそのSQLファイルを読み込む

    • ベストアンサー
    • PHP
  • SQLクエリでデータベースが壊れる?

    AccessアプリでSQL Serverデータベースを更新しています。 データベースをODBCデータソースとして登録して、AccessdeそのODBCデータソースへのリンクテーブルを作っています。 データベースが何回か壊れたのですが、AccessVBAから発行したリンクテーブルへのSQLクエリでデータベースが壊れるようなことはあるんでしょうか? あるとしたら、そのクエリを発行すると必ず壊れると思うんですが・・・。 同じAccessアプリを使っても、データベースが壊れない環境もありますし・・・。 データベースが壊れた原因がわからなくて困っています。 Windows 7、SQL Server 2008 R2 Express です。