日期:2014-05-17  浏览次数:20637 次

帮忙改一个SQL存储过程的语句
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE  [dbo].[UserStatisticsByDepartmentID] 
-- Add the parameters for the stored procedure here

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 Department 
, isnull(sum(CASE WHEN Sex IN (0,1) AND Onjob=1 THEN 1 ELSE 0 END),0)AS 'Total'
, isnull(sum(CASE WHEN Sex = 0 AND Onjob=1 THEN 1 ELSE 0 END),0)AS 'Woman'
, isnull(sum(CASE WHEN Sex = 1 AND Onjob=1 THEN 1 ELSE 0 END),0)AS 'Man'
, isnull(sum(CASE WHEN datediff(day,EntryDate,getdate())=0 THEN 1 ELSE 0 END),0)AS 'TodayIn'
, isnull(sum(CASE WHEN datediff(day,Departure,getdate())=0 THEN 1 ELSE 0 END),0)AS 'TodayOut'
, isnull(sum(CASE WHEN datediff(month,EntryDate,getdate())=0 THEN 1 ELSE 0 END),0)AS 'MonthIn'
, isnull(sum(CASE WHEN datediff(month,Departure,getdate())=0 THEN 1 ELSE 0 END),0)AS 'MonthOut'
, isnull(sum(CASE WHEN datediff(year,EntryDate,getdate())=0 THEN 1 ELSE 0 END),0)AS 'YearIn'
, isnull(sum(CASE WHEN datediff(year,Departure,getdate())=0 THEN 1 ELSE 0 END),0)AS 'YearOut'
 FROM DB_User
 GROUP BY Department
END




上面这段代码是可以正常执行的,现在我要改成带参数的查询后 程序就不能得到任何的数据,请高手指点下

增加变量 @DeptID     
代码 FROM DB_User
改成  FROM DB_User WHERE Department IN(@DeptID)

谢谢
 

------解决方案--------------------
exec ('SELECT Department 
, isnull(sum(CASE WHEN Sex IN (0,1) AND Onjob=1 THEN 1 ELSE 0 END),0)AS Total
, isnull(sum(CASE WHEN Sex = 0 AND Onjob=1 THEN 1 ELSE 0 END),0)AS Woman
, isnull(sum(CASE WHEN Sex = 1 AND Onjob=1 THEN 1 ELSE 0 END),0)AS Man
, isnull(sum(CASE WHEN datediff(day,EntryDate,getdate())=0 THEN 1 ELSE 0 END),0)AS TodayIn
, isnull(sum(CASE WHEN datediff(day,Departure,getdate())=0 THEN 1 ELSE 0 END),0)AS TodayOut
, isnull(sum(CASE WHEN datediff(month,EntryDate,getdate())=0 THEN 1 ELSE 0 END),0)AS MonthIn
, isnull(sum(CASE WHEN datediff(month,Departure,getdate())=0 THEN 1 ELSE 0 END),0)AS MonthOut
, isnull(sum(CASE WHEN datediff(year,EntryDate,getdate())=0 THEN 1 ELSE 0 END),0)AS