ここから本文です
解決済みのQ&A
このエントリーをはてなブックマークに追加
知恵コレに追加する

MAXを利用したSQL文で、期間中の最大日のレコードを抽出したいのですが...。 SQ...

yasushi19650114さん

MAXを利用したSQL文で、期間中の最大日のレコードを抽出したいのですが...。
SQL初心者なもので、わかる方がいらっしゃったら教えていただけないでしょうか。

以下のようなレコードがあります。
Table名 : LogTable
名前,日付
太郎,2010/09/10
太郎,2010/09/11
三郎,2010/09/11
次郎,2010/09/11
次郎,2010/09/12
太郎,2010/09/13
太郎,2010/09/14
次郎,2010/09/15
太郎,2010/09/16

このとき、日付を2010/09/11~2010/09/15で指定して、期間中の名前の最新レコードを抽出したいのですが。

欲しい結果。
三郎,2010/09/11
太郎,2010/09/14
次郎,2010/09/15

環境はVB.NET,SQL Server2005です。
できましたら、サブクエリを使用した方法で解決したいのですが。
よろしくお願いいたします。

違反報告

  • 質問日時:
    2010/9/18 23:05:50
  • 解決日時:
    2010/10/3 08:17:25
  • 閲覧数:
    1,314
    回答数:
    2

ベストアンサーに選ばれた回答

sofarawaygoneさん

サブクエリなしのSQLでしたら、

select name, max(date) from LogTable
where date between date('2010-09-11') and date('2010-09-15')
group by name;

サブクエリありのSQLでしたら、

select * from LogTable a
where not exists
(select * from LogTable b
where a.name=b.name and a.date<b.date
and date between date('2010-09-11') and date('2010-09-15'))
and date between date('2010-09-11') and date('2010-09-15');

当方SQL Serverの環境がなくMySQLでテストしたSQLですので、見当はずれの回答でしたらご勘弁を。

  • 回答日時:2010/9/19 02:46:34

この質問は投票によってベストアンサーが選ばれました!

ベストアンサー以外の回答

(1件中1〜1件)

 

phoenix3430025さん

group by を使う
select 名前, MAX(日付) FROM LogTable
WHERE 日付>=#2010/09/11# AND 日付<=#2010/09/15#
group by 名前

未確認なので
間違ってたらすまん

  • 回答日時:2010/9/18 23:18:49

あなたにおすすめの解決済みの質問

太郎君がいました。太郎君はAサイトで紹介されたBサイトに行き登録しました。BサイトはAサイトからきた...
レコードの平均値算出に関する内部処理について教えてください。たとえはユーザー情報としてレコードに...
レコードを同じテーブルに主キーの値のみを任意の値に変更して新規レコードとして追加したいAccess初心...
レコードの追加の状態でフォーム表示されると、コントロールの標題も変わる方法。レコードを新規に追加...
レコードを複数行ロックして一つ一つコミットすることはできますか?
PR
Yahoo!知恵袋のQ&Aアプリが登場! さくさく検索、かんたんに質問や回答ができる! Yahoo!知恵袋アプリ

最新ランキング

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。

お客様自身の責任と判断で、ご利用ください。


知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する