Ciao,

ho questo codice SQL che va a prendere i campionamenti, di una serie di stazioni di monitoraggio, estrapola tutti i valori delle rilevazioni di un certo sensore (DataOffset = 6), calcolando il valore massimo per ogni mese nel priodo di tempo specificato.

codice:
SELECT h.`samplingdate`, MAX(r.`value`)
FROM `results` r
JOIN `headers` h
  ON r.`headerid` = h.`id`
JOIN `channels` c
  ON c.`ChannelID` = r.`ChannelID`
WHERE h.`samplingdate` >= '2011-01-01 00:00:00'
  AND h.`samplingdate` <= '2011-08-29 00:00:00'
  AND c.`StationID` = 'IMPIANTO'
  AND c.`DataOffset` = 6
/*  AND r.`channelid` = '$channel_id'  */
GROUP BY Year(h.`samplingdate`), Month(h.`samplingdate`)
ORDER BY h.`samplingdate`
Vorrei modificarla in modo da ritornare, al posto di ogni MAX(valore) mensile, la differenza tra il MAX() mensile e il MAX() del mese precedente.

Ho provato a scrivere qualcosa ma non riesco a capire come fare

codice:
SELECT h.`samplingdate` as CurrentSampling, (
                          MAX(r.`value`) - (
                                            SELECT Month(h.`samplingdate`) as Previous_Sampling,
                                                       MAX(r.`value`)
                                            FROM `headers` h
                                            JOIN `headers` h
                                              ON r.`headerid` = h.`id`
                                            JOIN `channels` c
                                              ON c.`ChannelID` = r.`ChannelID`
                                            WHERE Year(h.`samplingdate`)
                                              AND Month(h.`samplingdate`) = Month(CurrentSampling)-1
                                              AND c.`StationID` = 'IMPIANTO'
                                              AND c.`DataOffset` = 6 )
                         ) as Previous_MAX
FROM `results` r
JOIN `headers` h
  ON r.`headerid` = h.`id`
JOIN `channels` c
  ON c.`ChannelID` = r.`ChannelID`
WHERE h.`samplingdate` >= '2011-01-01 00:00:00'
  AND h.`samplingdate` <= '2011-08-29 00:00:00'
  AND c.`StationID` = 'IMPIANTO'
  AND c.`DataOffset` = 6
/*  AND r.`channelid` = '$channel_id'  */
GROUP BY Year(h.`samplingdate`), Month(h.`samplingdate`)
ORDER BY h.`samplingdate`
Ma mi pare un pò caotica, ed ovviamente non funzionante....

Sapete dirmi come fare?