0

この結果セットのスニペットがあります。

DateAndTime         Date        Hr  Min Tag Val
11/15/2011 0:00:29  11/15/2011  0   0   47  0.084000006318092
11/15/2011 0:00:59  11/15/2011  0   0   47  0.086000002920628
11/15/2011 0:00:13  11/15/2011  0   0   47  0.084000006318092
11/15/2011 0:00:44  11/15/2011  0   0   47  0.087000004947186
11/15/2011 0:05:06  11/15/2011  0   5   47  0.088500000536442
11/15/2011 0:05:21  11/15/2011  0   5   47  0.084500007331371
11/15/2011 0:05:51  11/15/2011  0   5   47  0.086000002920628
11/15/2011 0:05:36  11/15/2011  0   5   47  0.088000006973743
11/15/2011 0:10:41  11/15/2011  0   10  47  0.086000002920628
11/15/2011 0:10:56  11/15/2011  0   10  47  0.089500002563000
11/15/2011 0:10:09  11/15/2011  0   10  47  0.086500003933907
11/15/2011 0:10:25  11/15/2011  0   10  47  0.089000001549721
11/15/2011 0:15:45  11/15/2011  0   15  47  0.089000001549721
11/15/2011 0:15:14  11/15/2011  0   15  47  0.087500005960465
11/15/2011 0:15:29  11/15/2011  0   15  47  0.089500002563000
11/15/2011 0:20:48  11/15/2011  0   20  47  0.106000006198883
11/15/2011 0:20:03  11/15/2011  0   20  47  0.109500005841255
11/15/2011 0:20:18  11/15/2011  0   20  47  0.104500003159046
11/15/2011 0:20:33  11/15/2011  0   20  47  0.109000004827976

分0、分5、分10などの単一行のみを返したい

4

4 に答える 4

0

これは、ウィンドウ関数が必要な場合ですが、SQLServer2000では使用できません。

別の方法は次のとおりです。

select t.*
from t join
     (select date, hour, min, min(datetime) as mindatetime
      from t
      group by date, hour, min
     ) tsum
     on t.datetime = tsum.mindatetime

これは、日時フィールドが一意であることを前提としています。それ以外の場合、列にIDがある場合は、代わりにそれを使用できます。

于 2012-05-24T20:36:32.473 に答える
0
DECLARE @Minutes VARCHAR(1000) 
;WITH MyRecords AS
(
   SELECT TOP 3 Distinct Min FROM TableName
)


SELECT @Minutes = COALESCE(@Minutes + ', ', '') + MINFROM MyRecords 

PRINT @Minutes

結果: 0、5、10

分を追加する必要がある場合は、@Minutes の前に簡単に追加できます:)

于 2012-05-24T20:29:17.950 に答える
0
SELECT *, 
       id = IDENTITY(INT, 1, 1) 
INTO   #temp 
FROM   MyTable 
ORDER  BY [min] 

SELECT o.* 
FROM   #temp o 
WHERE  o.id = (SELECT Min(id) 
               FROM   #temp t 
               WHERE  t.[Min] = o.[Min]) 
于 2012-05-24T20:34:53.057 に答える
0

以下はすべての RDBMS で機能するはずです (ただし、現時点ではテストできません)。

SELECT actual.DateAndTime, actual.Tag, actual.Val
FROM ResultTable actual
LEFT JOIN ResultTable exclude
ON exclude.Date = actual.Date
AND exclude.Hr = actual.Hr
AND exclude.Min = actual.Min
AND exclude.DateAndTime > actual.DateAndTime
WHERE exclude.DateAndTime IS NULL

...これにより、毎分「最新」の行が得られます。

于 2012-05-24T20:44:40.440 に答える