SQL Server对子查询返回的数据使用Having子句

SELECT  id ,
        idUser ,
        szEAN ,
        szMeterAddressConcat ,
        szCommodity ,
        szChannelConcat ,
        szEmail ,
        iProcessedFlag ,
        dtCreated ,
        iStatus ,
        iActive ,
        iIgnore ,
        iNumEanCount
FROM    ( SELECT    MAX(met.id) AS id ,
                    MAX(met.idUser) AS idUser ,
                    MAX(met.szEAN) AS szEAN ,
                    MAX(met.szMeterAddress) AS szMeterAddressConcat ,
                    MAX(met.szCommodity) AS szCommodity ,
                    MAX(met.szChannel) AS szChannelConcat ,
                    MAX(met.szEmail) AS szEmail ,
                    MAX(met.iProcessedFlag) AS iProcessedFlag ,
                    MAX(met.dtCreated) AS dtCreated ,
                    MAX(met.iStatus) AS iStatus ,
                    MAX(met.iActive) AS iActive ,
                    MAX(met.iIgnore) AS iIgnore ,
                    ( SELECT    COUNT(el.IDan)
                      FROM      dbo.tblean el
                      WHERE     el.EAN = met.szEAN
                                AND el.isDeleted = 0
                    ) AS iNumEanCount ,
                    ROW_NUMBER() OVER ( ORDER BY MAX(met.szEAN) ASC ) AS 'RowNumber'
          FROM      dbo.tblcustomermeterlist AS met
          WHERE     met.isDeleted = '0'
          GROUP BY  szEAN
          HAVING    MAX(iNumEanCount) > 0
        ) AS mt
WHERE   mt.RowNumber BETWEEN 1 AND 25  

I am trying to use HAVING clause on iNumEanCount. Can anybody let me know what I am doing wrong in above query?

Thank you guys for your quick responses. I made little changes to my query and it is working fine for me. here i am posting the changes what i have made.

SELECT 
                id,
                idUser,
                szEAN, 
                szMeterAddressConcat,
                szCommodity,
                szChannelConcat,
                szEmail,
                iProcessedFlag,
                dtCreated,
                iStatus,
                iActive, 
                iIgnore,
                iNumEanCount
            FROM ( 
               SELECT  
                  MAX(met.id) as id,
                  MAX(met.idUser) as idUser,
                  MAX(met.szEAN) as szEAN,
                  MAX(met.szMeterAddress) as szMeterAddressConcat,
                  MAX(met.szCommodity) as szCommodity,
                  MAX(met.szChannel) as szChannelConcat,
                  MAX(met.szEmail) as szEmail,
                  MAX(met.iProcessedFlag) as iProcessedFlag,
                  MAX(met.dtCreated) as dtCreated,
                  MAX(met.iStatus) as iStatus,
                  MAX(met.iActive) as iActive, 
                  MAX(met.iIgnore) as iIgnore,
                  ROW_NUMBER() OVER ( ORDER BY MAX(met.szEAN) ASC) AS 'RowNumber',
                  (SELECT count(el.IDan) FROM dbo.tblean el WHERE el.EAN = met.szEAN AND el.isDeleted
=0) as iNumEanCount
               FROM 
                  dbo.tblcustomermeterlist  as met
              WHERE
                  met.isDeleted = '0'

                   GROUP BY szEAN   
            ) AS mt    
                 WHERE mt.RowNumber BETWEEN 1 AND 25
                 AND iNumEanCount > 0