2

私は特にいくつかの解決策を見つけましたが、それは非常に役に立ち、ほとんど私をそこに連れて行きましたが、私は最後のビットに固執しました。私が今する必要があるのは、表示されるCarNumbersの範囲を指定できることだけです。

SQLの方が理にかなっているかもしれません...

SELECT sr.*  FROM StatusReport sr 
INNER JOIN (  SELECT CarNumber, MAX(StatusReportTime)  AS MaxDateTime
FROM StatusReport  GROUP BY CarNumber )  groupedsr ON sr.CarNumber =
groupedsr.CarNumber  AND sr.StatusReportTime = groupedsr.MaxDateTime

基本的にはに次の行を追加できるようにしたいと思います。

WHERE CarNumber BETWEEN '0' AND '3999' 

誰か助けてもらえますか?

前もって感謝します、

マイク

4

3 に答える 3

1

GROUP BY次のように、外側のクエリの最後、または句の前のサブクエリの最後に追加できます。

SELECT sr.*  
FROM StatusReport sr 
INNER JOIN 
(  
  SELECT CarNumber, MAX(StatusReportTime)  AS MaxDateTime
  FROM StatusReport  
  WHERE CarNumber BETWEEN '0' AND '3999'
  GROUP BY CarNumber 
)  groupedsr  ON sr.CarNumber        = groupedsr.CarNumber  
             AND sr.StatusReportTime = groupedsr.MaxDateTime;
于 2013-01-06T07:31:53.353 に答える
0
SELECT sr.*
FROM StatusReport sr
INNER JOIN
  (SELECT CarNumber,
          MAX(StatusReportTime) AS MaxDateTime
   FROM StatusReport
   WHERE CarNumber >0
   GROUP BY CarNumber) groupedsr ON sr.CarNumber = groupedsr.CarNumber
AND sr.StatusReportTime = groupedsr.MaxDateTime
于 2013-01-06T07:32:15.003 に答える
0

あなたはこのようにすることができます..これは理解しやすく、クエリを簡素化します

    with tbl2 as
    (
    select tbl1.*,
    row_number() over (order by CarNumber) rtn 
    from 
    (select CarNumber, max(StatusReportTime) as MaxDateTime from [StatusReport] group by         
    CarNumber) as  tbl1
    )
    select  * from tbl2 where rtn between 0 and 3999
于 2013-01-06T07:54:28.190 に答える