我编写了一个用于从列中获取计数的存储过程,但是当我执行该过程时,它返回一个日期值。单独的查询执行会返回所需的结果集。
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
答案 0 :(得分:3)
您正在使用整数@LastLoginDate
联合日期时间COUNT(isActive)
。
这导致您遇到的隐式转换。要在同一查询中返回这些值,您需要将它们转换为通用数据类型,可能是varchar。或者,您可以使用两个不同的查询。
如果您确实选择继续使用联合,请务必使用UNION ALL。阅读更多here。