2016-09-09 75 views
0

這是在SQL Server中運行的存儲過程。我也想提出返回數據的總數。如何檢索總數

ALTER PROCEDURE [dbo].[spManufacturerdata] 
AS 
BEGIN 
-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 

-- Insert statements for procedure here 
SELECT [t1].[OEMName] AS [oem], [t1].[OemId] AS [id] 
FROM (
    SELECT DISTINCT [t0].[OEMName], [t0].[OemId] 
    FROM [dbo].[tblOEM] AS [t0] 
    WHERE [t0].[IsActive] = 1 
    ) AS [t1] 
order BY LOWER([t1].[OEMName]) 

END 

在此先感謝。

+1

樣本數據和預期的結果將有助於解釋你想要什麼去做。我不確定「返回的數據總數」是什麼意思。 –

+0

你不能簡單地檢查主叫方的行數? – dean

回答

0

添加組通過

SELECT COUNT([t1].[OemId]) AS TotalCount,[t1].[OEMName] AS [oem], [t1].[OemId] AS [id] 
FROM (
    SELECT DISTINCT [t0].[OEMName], [t0].[OemId] 
    FROM [dbo].[tblOEM] AS [t0] 
    WHERE [t0].[IsActive] = 1 
    ) AS [t1] 
GROUP BY [t1].[OEMName] , [t1].[OemId] 
order BY LOWER([t1].[OEMName]) 
0

我意識到,一個COUNT()COUNT(DISTINCT)將只返回1的每一行。

如果您想對所有行的總數,那麼你想是這樣的:

SELECT t.OEMName as oem, t.OemId as id, 
     SUM(COUNT(*)) OVER() as total_rows, 
     COUNT(*) OVER() as total_combinations 
FROM dbo.tblOEM t 
WHERE t.IsActive = 1 
GROUP BY t.OEMName, t.OemId 
ORDER BY LOWER(t.OEMName); 
0

我不知道如果我理解你。 如果你想數由以前的選擇返回的總記錄,你只需要調用數():

SELECT COUNT([t1].[OEMName]) AS totalRowsInPreviuosQuery 
FROM (
    SELECT DISTINCT [t0].[OEMName], [t0].[OemId] 
    FROM [dbo].[tblOEM] AS [t0] 
    WHERE [t0].[IsActive] = 1 
) AS [t1] 
0

試試這個,

SELECT count(*) AS TotalCount 
FROM (
    SELECT DISTINCT [t0].[OEMName] 
     ,[t0].[OemId] 
    FROM [dbo].[tblOEM] AS [t0] 
    WHERE [t0].[IsActive] = 1 
    ) AS [t1]