我想选择最小的ProcessStepTwoDtTm和关联的ProcessStepTwoStaffId,但想知道是否有可能在单个select语句中做到这一点?我正在使用sql server 2014。
数据集
Id ProcessStepOneDtTm ProcessStepTwoStaffId ProcessStepTwoDtTm
1 2/2/2019 615 4/2/2019
2 2/2/2019 232 5/2/2019
所需的输出
Id ProcessStepOneDtTm ProcessStepTwoStaffId ProcessStepTwoDtTm
1 2/2/2019 615 4/2/2019
目前我有:
SELECT *
FROM
(
SELECT Id
, ProcessStepOneDtTm
, StaffId
, ProcessStepTwoDtTm
, ROW_NUMBER() OVER(PARTITION BY ProcessStepOneDtTm ORDER BY
ProcessStepTwoDtTm) as RowNum
)
WHERE RowNum = 1
有没有办法在单个select语句中做到这一点?
答案 0 :(得分:0)
您可以使用top with ties
:
SELECT TOP (1) WITH TIES . . .
FROM ?
ORDER BY ROW_NUMBER() OVER (PARTITION BY ProcessStepOneDtTm ORDER BY ProcessStepTwoDtTm)
我认为这样做的性能比您的情况要差一些。为了获得最佳性能,关联的子查询通常效果最好:
select t.*
from t
where t.ProcessStepTwoDtTm = (select min(t2.ProcessStepTwoDtTm)
from t t2
where t2.ProcessStepOneDtTm = t.ProcessStepOneDtTm
);
为了提高性能,您需要在(ProcessStepOneDtTm, ProcessStepTwoDtTm)
上建立索引。
答案 1 :(得分:0)
您可以使用下面的单行查询
Cannot convert value of type '(_) -> Observable<[City]>' to expected argument type '(CLLocationCoordinate2D) -> SharedSequence<_, _>'