我有以下查询,以从SQL视图中选择有趣的行:
SELECT *
from INT115_Payroll_Integration_Employment
WHERE (Employment_ExecutionId = 'Worker information-2019-03-06T02:49:49-4526155B07EC4FFD9A01DB540C9259C1'
OR EmploymentDetail_ExecutionID = 'Worker information-2019-03-06T02:49:49-4526155B07EC4FFD9A01DB540C9259C1'
OR EmploymentTerm_ExecutionID = 'Worker information-2019-03-06T02:49:49-4526155B07EC4FFD9A01DB540C9259C1'
OR EmploymentComp_ExecutionID = 'Worker information-2019-03-06T02:49:49-4526155B07EC4FFD9A01DB540C9259C1')
AND Worker_Type = '1'
ORDER BY PERSONNELNUMBER ASC, SYNCSTARTDATETIME DESC, Employment_EndDate DESC, Employment_StartDate DESC
现在,我想从上述结果中获得唯一的PERSONNELNUMBER + EmploymentDetail_RecId的每个实例的第一行。
从这里类似的问题中得到启发后,我已经完成了对视图中所有行的操作,但是没有对第一次选择的行进行操作。
SELECT *
FROM (
SELECT *
, rn = ROW_NUMBER() OVER (PARTITION BY e.EmploymentDetail_RecId ORDER BY e.PERSONNELNUMBER ASC, EmploymentDetail_RecId ASC, e.SYNCSTARTDATETIME DESC, e.Employment_EndDate DESC, e.Employment_StartDate DESC)
FROM INT115_Payroll_Integration_Employment e
) e
WHERE
rn = 1
ORDER BY PERSONNELNUMBER ASC, EmploymentDetail_RecId ASC, SYNCSTARTDATETIME DESC, Employment_EndDate DESC, Employment_StartDate DESC
如何将两个查询合并为一个查询,使其仅返回我想要的两行?
更新
就像LukStorms建议的那样,只需在第二个查询的子查询中添加第一个查询的WHERE子句就很简单。谢谢。
SELECT *
FROM (
SELECT *
, rn = ROW_NUMBER() OVER (PARTITION BY e.EmploymentDetail_RecId ORDER BY e.PERSONNELNUMBER ASC, EmploymentDetail_RecId ASC, e.SYNCSTARTDATETIME DESC, e.Employment_EndDate DESC, e.Employment_StartDate DESC)
FROM INT115_Payroll_Integration_Employment e
WHERE (Employment_ExecutionId = 'Worker information-2019-03-06T02:49:49-4526155B07EC4FFD9A01DB540C9259C1'
OR EmploymentDetail_ExecutionID = 'Worker information-2019-03-06T02:49:49-4526155B07EC4FFD9A01DB540C9259C1'
OR EmploymentTerm_ExecutionID = 'Worker information-2019-03-06T02:49:49-4526155B07EC4FFD9A01DB540C9259C1'
OR EmploymentComp_ExecutionID = 'Worker information-2019-03-06T02:49:49-4526155B07EC4FFD9A01DB540C9259C1')
AND Worker_Type = '1'
) e
WHERE
rn = 1
ORDER BY PERSONNELNUMBER ASC, EmploymentDetail_RecId ASC, SYNCSTARTDATETIME DESC, Employment_EndDate DESC, Employment_StartDate DESC