web-dev-qa-db-ja.com

1つの列から最小(日付)、最大(日付)を選択し、日ごとにグループ化-SQL

私はすぐに手伝ってください助けてください。

datetime値を含む1つの列があります。

毎日の最小値と最大値を見つける必要があります。

データは次のようになります

2012-11-23 05:49:26.000  
2012-11-23 07:55:43.000  
2012-11-23 13:59:56.000  
2012-11-26 07:51:13.000  
2012-11-26 10:23:31.000  
2012-11-26 10:25:09.000  
2012-11-26 16:22:22.000  
2012-11-27 07:30:03.000  
2012-11-27 08:53:47.000  
2012-11-27 10:40:55.000  

これが今まで試したことです

select distinct(convert(nvarchar, datum, 112)), min(datum), max(datum) 
from myTable

しかし、私が

Group by

3列すべてでグループ化します...

これで最初の選択をColNameおよびGroupとして設定するように動作していないようです

これは私が欲しいものです

20121123 | 2012-11-23 05:49:26.000 | 2012-11-23 13:59:56.000  
20121126 | 2012-11-26 07:51:13.000 | 2012-11-26 16:22:22.000  
20121127 | 2012-11-27 07:30:03.000 | 2012-11-27 10:40:55.000  
8
m0rte0

GROUP BYの列も変換します。

select
  min(datum), max(datum), CONVERT(varchar(8), datum, 112)
from
  dateTable
group by 
  CONVERT(varchar(8), datum, 112)

フィドル

日付の変換値のリスト 。 (上記の場合、112を選択しました)

12
paqogomez

SQL Server 2008+では、文字列に変換する代わりにdateデータ型を使用できます。

select cast(datum as date), min(datum), max(datum) 
from myTable
group by cast(datum as date);
2
Gordon Linoff