2011-12-02 111 views
1

我编写了一个存储过程来从列中获取计数,但是当我执行过程时它返回一个日期值。单独的查询执行返回所需的结果集。存储过程返回错误的值

ALTER PROCEDURE [dbo].[USP_ViewAdminDashBoard](@LoginUser varchar(75)) 
AS 
BEGIN 

    DECLARE @LastLoginDate as DateTime 

    Select @LastLoginDate = dbo.UDF_GetLastLoginByUser(@LoginUser); 

    Select 'Last Login Date', @LastLoginDate 
    Union 
    Select 'No. Active Business Associates' as Title, COUNT(isActive) Total 
    from (select 1)d(isActive) 
    where isActive = 1 
    Union Select 'New Registration Today' as Title, COUNT(1) Total from dbo.TBL_iREGFORM  where isActive = 1 And GETDATE()>= RegDate 
Union Select 'Registration Pending for Verification' as Title, COUNT(1) Total from dbo.TBL_iREGFORM where isActive = 1 and isVerified = 1 
END 
+1

你能提供你的实际查询吗? –

+2

没有多少人能够告诉你而不能看到查询。 –

+0

张贴您的整个查询@Madhav – BizApps

回答

3

您是UNION-ING日期​​时间@LastLoginDate一个整数,COUNT(isActive)

这导致您正在经历的隐式转换。要在同一个查询中返回这些值,您需要将它们转换为通用数据类型,可能是varchar。或者,您可以使用两个不同的查询。

如果您确实选择继续使用union,请务必使用UNION ALL。阅读更多here

+0

感谢您的帮助pal.i需要键入每个单选择查询。或去两个不同的选择.. – joshua

+1

是的,你看到的日期值是你的整数从算作日期算起。 (int)0 =(datetime)1900-01-00 –