2017-08-24 74 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