Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL:查找最小值但大于最大值_Sql Server_Max_Min_Ms Project Server 2013 - Fatal编程技术网

Sql server SQL:查找最小值但大于最大值

Sql server SQL:查找最小值但大于最大值,sql-server,max,min,ms-project-server-2013,Sql Server,Max,Min,Ms Project Server 2013,我正在处理任务历史记录,并尝试查找附加到同一记录的两个日期:1最近一次任务被批准的时间max approve;2上述批准后的首次提交日期 以下是我到目前为止的情况: Select a.assn_uid, max(b.ASSN_TRANS_DATE_ENTERED) as LastApprove, e.LastSubmitted FROM [PRJDEV_ProjectWebApp].[pub].[MSP_ASSIGNMENT_TRANSACTIONS] a inner join [PR

我正在处理任务历史记录,并尝试查找附加到同一记录的两个日期:1最近一次任务被批准的时间max approve;2上述批准后的首次提交日期

以下是我到目前为止的情况:

Select  
a.assn_uid,
max(b.ASSN_TRANS_DATE_ENTERED) as LastApprove, 
e.LastSubmitted 

FROM [PRJDEV_ProjectWebApp].[pub].[MSP_ASSIGNMENT_TRANSACTIONS] a
inner join [PRJDEV_ProjectWebApp].[pub].[MSP_ASSIGNMENT_TRANSACTIONS_COMMENTS] b
on a.ASSN_TRANS_UID = b.ASSN_TRANS_UID



join (select c.assn_uid,
min(d.ASSN_TRANS_DATE_ENTERED) as LastSubmitted

FROM [PRJDEV_ProjectWebApp].[pub].[MSP_ASSIGNMENT_TRANSACTIONS] c
inner join [PRJDEV_ProjectWebApp].[pub].[MSP_ASSIGNMENT_TRANSACTIONS_COMMENTS] d
on c.ASSN_TRANS_UID = d.ASSN_TRANS_UID

where c.ASSN_UID = '499879BC-28B2-E411-8B0A-00059A3C7A00'
and d.[ASSN_TRANS_COMMENT_TYPE_ENUM] = 0

group by c.assn_uid ) e
on e.ASSN_UID = a.ASSN_UID


where a.ASSN_UID = '499879BC-28B2-E411-8B0A-00059A3C7A00'
and b.[ASSN_TRANS_COMMENT_TYPE_ENUM] = 1

group by a.assn_uid, e.LastSubmitted
这很接近,但是,它给了我有史以来第一次提交任务。我确信我需要使用另一个子查询,我只是不知道如何在同一个结果中引用列

这是任务历史记录。突出显示了我试图展示的两个日期:

我不知道我能在任何合理的时间内完成您的查询,但要在特定行之后获取该行,您需要执行以下操作:

create table #submissions (
        ID int,
        DateAdded datetime,
        SubmissionType nvarchar(100)
    )
insert #submissions values
    (1, '2010-01-01', 'first ever'),
    (1, '2010-01-02', 'second'),
    (1, '2010-01-03', 'third'),
    (1, '2010-01-04', 'approve'),
    (1, '2010-01-05', 'first after approve'),
    (1, '2010-01-06', 'second after approve'),
    (1, '2010-01-07', 'third after approve')

declare @lastApprovalDate datetime

select @lastApprovalDate = MAX(DateAdded)
    from #submissions
    where
        SubmissionType = 'approve'

declare @firstAfterApprovalDate datetime
select @firstAfterApprovalDate = MIN(DateAdded)
    from #submissions
    where
        DateAdded > @lastApprovalDate

select *
    from #submissions
    where
        DateAdded = @firstAfterApprovalDate

drop table #submissions

通常,使用MAX获取最后一个批准日期,然后使用MIN where DateAdded>that MAX获取该日期之后的第一个日期,然后选择该日期的行。我添加了Top1,以防当时恰好有多行。不确定这在您的数据中是否可行,但为了安全起见。

在一些帮助下,我们发现我们需要在查询中增加一分钟

SELECT
       final.assn_uid,
       final.LastApprove,
       min(final.SubmissionDate) FirstSubmitted
FROM
       (Select  
       a.assn_uid,
       max(b.ASSN_TRANS_DATE_ENTERED) as LastApprove, 
       e.SubmittedDates SubmissionDate

       FROM [PRJDEV_ProjectWebApp].[pub].[MSP_ASSIGNMENT_TRANSACTIONS] a
       inner join [PRJDEV_ProjectWebApp].[pub].[MSP_ASSIGNMENT_TRANSACTIONS_COMMENTS] b
       on a.ASSN_TRANS_UID = b.ASSN_TRANS_UID



       join (select c.assn_uid,
       (d.ASSN_TRANS_DATE_ENTERED) as SubmittedDates

       FROM [PRJDEV_ProjectWebApp].[pub].[MSP_ASSIGNMENT_TRANSACTIONS] c
       inner join [PRJDEV_ProjectWebApp].[pub].[MSP_ASSIGNMENT_TRANSACTIONS_COMMENTS] d
       on c.ASSN_TRANS_UID = d.ASSN_TRANS_UID

       where c.ASSN_UID = '499879BC-28B2-E411-8B0A-00059A3C7A00'
       and d.[ASSN_TRANS_COMMENT_TYPE_ENUM] = 0

       ) e
       on e.ASSN_UID = a.ASSN_UID


       where a.ASSN_UID = '499879BC-28B2-E411-8B0A-00059A3C7A00'
       and b.[ASSN_TRANS_COMMENT_TYPE_ENUM] = 1
       and e.SubmittedDates > b.ASSN_TRANS_DATE_ENTERED

       group by a.assn_uid, e.SubmittedDates) Final

GROUP BY
       final.assn_uid,
       final.LastApprove