【发布时间】:2015-05-30 07:10:19
【问题描述】:
下面是我的存储过程:
ALTER PROCEDURE [dbo].[uspApprovalHistory]
-- Add the parameters for the stored procedure here
@empID int = null
AS
BEGIN
declare @SRFTable table
(SRFID nvarchar(50))
declare @currSRFID nvarchar(50) = null
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
insert into @SRFTable
Select distinct MasterCode from CallForwarding
Where EmployeeNo = @empID or ApproverNo = @empID;
Select * From callforwarding
Where Mastercode in (select SRFID from @SRFTable)
and ApproverNo = @empID
and ForwardDate in (Select max(ForwardDate) from CallForwarding
where Mastercode in (select SRFID from @SRFTable)
and ApproverNo = @empID)
END
为什么它没有按预期工作?它只返回一行,基于整个表中的最大转发日期。
我想要的是 SRFID = Mastercode 和 ForwardDate = Max(ForwardDate) 的所有行。一个 SRFID 有多个记录,并且有多个 SRFID。我想要所有带有 SRFID 的行,其中转发日期是最近的。所以最终结果将是等于最近转发的 SRFID 的行。
【问题讨论】:
标签: sql sql-server stored-procedures sql-server-2012