I have two tables:
Meter
ID         SerialNumber
=======================
1          ABC1
2          ABC2
3          ABC3
4          ABC4
5          ABC5
6          ABC6
RegisterLevelInformation
ID         MeterID    ReadValue    Consumption  PreviousReadDate    ReadType
============================================================================
1          1          250          250          1 jan 2015          EST
2          1          550          300          1 feb 2015          ACT
3          1          1000         450          1 apr 2015          EST
4          2          350          350          1 jan 2015          EST
5          2          850          500          1 feb 2015          ACT
6          2          1000         150          1 apr 2015          ACT
7          3          1500         1500         1 jan 2015          EST
8          3          2500         1000         1 mar 2015          EST
9          3          5000         2500         4 apr 2015          EST
10         4          250          250          1 jan 2015          EST
11         4          550          300          1 feb 2015          ACT
12         4          1000         450          1 apr 2015          EST
13         5          350          350          1 jan 2015          ACT
14         5          850          500          1 feb 2015          ACT
15         5          1000         150          1 apr 2015          ACT
16         6          1500         1500         1 jan 2015          EST
17         6          2500         1000         1 mar 2015          EST
18         6          5000         2500         4 apr 2015          EST
I am trying to group by meter serial and return the last actual read date for each of the meters but I am unsure as to how to accomplish this. Here is the sql I have thus far:
select a.SerialNumber, ReadTypeCode, MAX(PreviousReadDate) from Meter as a
left join RegisterLevelInformation as b on a.MeterID = b.MeterID
where ReadType = 'ACT'
group by a.SerialNumber,b.ReadTypeCode, PreviousReadDate
order by a.SerialNumber
I can't seem to get the MAX function to take effect in returning only the latest actual reading row and it returns all dates and the same meter serial is displayed several times.
If I use the following sql:
select a.SerialNumber, count(*) from Meter as a
left join RegisterLevelInformation as b on a.MeterID = b.MeterID
group by a.SerialNumber
order by a.SerialNumber
then each serial is shown only once. Any help would be greatly appreciated.
 
     
     
     
    