Sql server 如何在同一查询中使用Count和Sum?

Sql server 如何在同一查询中使用Count和Sum?,sql-server,sql-server-2008,count,sum,aggregate,Sql Server,Sql Server 2008,Count,Sum,Aggregate,我使用聚合函数“SUM”编写了以下查询 当前,此查询返回2行。我要检索此查询的计数。如何计算上述查询的行数?您可以将@@ROWCOUNT添加到查询中,这也会给出最终结果集以及结果集中所有行的计数 SELECT COUNT(*) as Total_Rows FROM ( SELECT D.PODetailID as PODetailID, SUM(D.AcceptedQty) as Total_AcceptedQty FROM STR_MRVDetail D INNER JOIN STR_MRV

我使用聚合函数“SUM”编写了以下查询


当前,此查询返回2行。我要检索此查询的计数。如何计算上述查询的行数?

您可以将
@@ROWCOUNT
添加到查询中,这也会给出最终结果集以及结果集中所有行的计数

SELECT COUNT(*) as Total_Rows
FROM
(
SELECT D.PODetailID as PODetailID, SUM(D.AcceptedQty) as Total_AcceptedQty
FROM STR_MRVDetail D 
INNER JOIN STR_MRVHeader H ON H.MRVID = D.MRVID 
INNER JOIN PUR_POHeader PH ON PH.POID = H.POID 
INNER JOIN PUR_PODetail PD ON PD.PODetailID = D.PODetailID
WHERE H.StatusID = 4
AND PH.POID = 839
AND (SELECT SUM(AcceptedQty) FROM STR_MRVDetail 
     WHERE STR_MRVDetail.PODetailID = PD.PODetailID) = 
     (SELECT POQuantity FROM PUR_PODetail 
      WHERE PUR_PODetail.PODetailID = PD.PODetailID)
GROUP BY D.PODetailID
) as t
SELECT D.PODetailID, SUM(D.AcceptedQty), @@ROWCOUNT FROM STR_MRVDetail D  
INNER JOIN STR_MRVHeader H ON H.MRVID = D.MRVID  
INNER JOIN PUR_POHeader PH ON PH.POID = H.POID  
INNER JOIN PUR_PODetail PD ON PD.PODetailID = D.PODetailID 
WHERE H.StatusID = 4 
AND PH.POID = 839 
AND (SELECT SUM(AcceptedQty) FROM STR_MRVDetail  
     WHERE STR_MRVDetail.PODetailID = PD.PODetailID) =  
     (SELECT POQuantity FROM PUR_PODetail  
      WHERE PUR_PODetail.PODetailID = PD.PODetailID) 
GROUP BY D.PODetailID 

您可以将
@@ROWCOUNT
添加到查询中,该查询还提供最终结果集以及结果集中所有行的计数

SELECT D.PODetailID, SUM(D.AcceptedQty), @@ROWCOUNT FROM STR_MRVDetail D  
INNER JOIN STR_MRVHeader H ON H.MRVID = D.MRVID  
INNER JOIN PUR_POHeader PH ON PH.POID = H.POID  
INNER JOIN PUR_PODetail PD ON PD.PODetailID = D.PODetailID 
WHERE H.StatusID = 4 
AND PH.POID = 839 
AND (SELECT SUM(AcceptedQty) FROM STR_MRVDetail  
     WHERE STR_MRVDetail.PODetailID = PD.PODetailID) =  
     (SELECT POQuantity FROM PUR_PODetail  
      WHERE PUR_PODetail.PODetailID = PD.PODetailID) 
GROUP BY D.PODetailID 

那么你想把计数(在本例中为2)作为一个单独的列吗?不,我不想显示。我只想计算行数,并将行数分配给一个整数变量。您的编程语言应该能够获取检索到的行数(或在显示行数时对其进行计数)。我需要在执行查询后获取检索到的行数,返回的行数将在
中可用。@@RowCount
。因此您想将计数(在本例中为2)作为一个单独的列来获取吗?不,我不想显示。我只想计算行数,并将行数分配给一个整数变量。您的编程语言应该有办法获取检索到的行数(或在显示行数时对行数进行计数)。我需要获取检索到的行数执行查询后,返回的行数将在
中可用。@@RowCount