2017-08-24 73 views
-1

我有一個存儲過程的名稱叫做「sp_Proc_EmployeeDetails」如何根據條件計數Exec​​存儲過程輸出值計數?

在像下面這種格式程序的返回值:

SNo EmpName EmpNumber 
---------------------------- 
1  abc  101 
2  abc  102 
3  abc1  103 
4  abc2  104 
5  abc2  105 
6  abc2  106 

在這上面的結果,我需要下面的輸出,同時執行存儲過程。

E.g: 
Exec sp_Proc_EmployeeDetails 

Output: 
------------- 
abc Count = 2 
abc1 Count = 1 
abc2 Count = 3 
+1

有人會建議你使用'INSERT ... EXEC',然後對結果進行查詢。我的建議是查看'sp_proc_employeedetails'的邏輯來查看它是否使用可以很容易地適用於直接使用'SELECT EmpName,Count(*)FROM ... GROUP BY EmpName'的查詢,因爲它不會破壞if存儲過程的輸出格式發生變化並可能表現更好。 –

+0

這個存儲過程在做什麼?您可能需要一個視圖。 – Peter

+2

偏離主題;有很好的論據來反駁你的[程序]前綴(https://dba.stackexchange.com/questions/25348/still-wrong-to-start-the-name-of-a-user-stored-procedure-with-sp )sp_。 –

回答

0
Create table Emp (
SNo int , 
EmpName varchar(50), 
EmpNumber int 
) 
go 

insert into Emp 
select 1  ,'abc'  , 101 
union all select 2  ,'abc'  ,102 
union all select 3  ,'abc1'  ,103 
union all select 4  ,'abc2'  ,104 
union all select 5  ,'abc2'  ,105 
union all select 6  ,'abc2'  ,106 
go 

create proc sp_Proc_EmployeeDetails 
as 
begin 
    select EmpName + ' Count = ' + cast(COUNT(*) as varchar(10)) as [Output:] from Emp 
group by EmpName 
end 
go 

exec sp_Proc_EmployeeDetails 

Output: 
--------------------- 
abc Count = 2 
abc1 Count = 1 
abc2 Count = 3