goo blog サービス終了のお知らせ 

さくら情報技術研究所 (日本人エンジニア雇用を守る会) 

日本人同胞エンジニア権利守ろう
中国人は、小日本と馬鹿にしている。
その反日中国人を雇うことで、日本人雇用が危ない。

SQL文の作成方法 -分単位毎で秒の1番小さいレコードを取得

2008年01月16日 | Weblog
SQL文の作成方法
-cinq- 日付の列に以下のようなデータがあり

===============
日付 char[14]
===============
20070722120000
20070722120010
20070722120020
20070722120030
20070722120040
20070722120050
    ・   
    ・   
20070722124350
20070722124420
20070722124430
20070722124440
20070722124450
20070722124510

このレコードを

===============
日付 char[14]
===============
20070722120000
20070722124420
20070722124510

分単位毎で秒の1番小さいレコードを取得したいと思っていますが、
どのようなSQLを作成したらよいのかわかりません。


答え

ANo.1 文字列ですから、考え方としては日付の1文字目から
12文字を抽出して、その文字列に対してグループをかければ
できるかと。
 SQLサーバーは、私は使ってないので、実験ができないのですが、
次のような感じでしょうか。

SELECT min(日付) FROM table_name
GROUP BY substring(日付, 1, 12)
ORDER BY min(日付)

(ORDER BY句は、付録です(笑))

回答
ご回答ありがとうございました。
上記のSQLを参考に確認を行いましたら上手く抽出できました。

SELECT b.日付, b.データ, b.フラグ
FROM テーブル名 AS a INNER JOIN
(SELECT MIN(日付) AS Expr1
FROM テーブル名
WHERE (日付 >= '20070723100000') AND (日付 <= '20070724095900')
GROUP BY SUBSTRING(日付, 1, 12)) AS b ON a.日付 = b.Expr1
ORDER BY b.日付