- 締切済み
SQL文で
T-SQLを使用しています。 下記のような場合どのようにSQL文を組めばよいのでしょうか?Group byを使用すると思うのですが・・・ テーブル名:SampleTbl フィールド1:ID(プライマリ) フィールド2:Name(varchar(4)) 【名前】 フィールド3:UpTime(varchar(16))【更新時刻】 ※UpTimeの概要 yyyyMMddhhmmssss 2004/06/01 12:00:0000 中身 1,鈴木,2004060112000000 2,鈴木,2004060112050000 3,鈴木,2004060112100000 4,鈴木,2004060112200000 5,山田,2004060112000000 抽出条件: 同一の名前で更新日が5分以内の範囲で更新されているデータのみ抽出する 抽出結果 1,鈴木,2004060112000000 2,鈴木,2004060112050000 3,鈴木,2004060112100000 上記の抽出結果を取得するにはどのようにすればよいか、ご教授お願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- taka_tetsu
- ベストアンサー率65% (1020/1553)
#1の方の回答ですと、何に対して5分以内というところが抜けているので結果が出ないような。 ということで、こうでしょう。 select distinct T1.ID, T1.Name, T1.UpTime from SampleTbl T1, SampleTbl T2 where T1.Name = T2.Name and T1.UpTime < T2.UpTime and T1.UpTimeの5分後 >= T2.UpTime ですかね。 ※distinctを使わないと重複行が出る可能性があります。 SQLServer使ったことないんで、 「T1.UpTimeの5分後」をどうするかがわかりませんが。 #数値にして50000足して文字列にするんでしょうけど。
- mooti887
- ベストアンサー率39% (9/23)
副問い合わせを使用するのが良いと思います。 大まかなSQL文の枠組みとしては次のようになるでしょう。 詳細は御自分でお考え下さい。 SELECT (フィールド名) FROM SampleTbl WHERE Name = (SELECT Name FROM SampleTbl WHERE (更新日5分以内) ) GROUP BY を用いると、 鈴木さんのデータが1行に集約されてしまうでしょう。
お礼
サブクエリに対しての「=」は使用できないと思います。
お礼
ありがとうございます。 一度はやはり厳しいですね。