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

时间:2015-07-24 08:12:00

标签: php sql-server having

private void datagridview.CellContentClick(object sender, Datagridviewcelleventargs e)
{
  int col= e.columnIndex
  if (col==6)
    {
          //code for EDIT
    }
    if (col==7)
    {
          //code for DELETE
    }
}

我正在尝试在iNumEanCount上使用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 子句。在上面的查询中,有人能让我知道我做错了吗?

1 个答案:

答案 0 :(得分:0)

谢谢你们的快速回复。我对我的查询做了一些改动,它对我来说很好。在这里,我发布了我所做的改变。

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