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