SELECT PositionToEffectDate as Current Date, PersonIdNo, PositionIdNo
FROM tPERSON_POSITIONS
WHERE PositionToEffectDate = (SELECT MAX(PositionToEffectDate) FROM tPERSON_POSITIONS)
GO
SELECT MAX(PositionToEffectDate) as CurrentDate, PersonIdNo, PositionIdNo
FROM tPERSON_POSITIONS
GROUP BY PersonIdNo,PositionIdNo,PositionToEffectDate
在上面的两个查询中,我试图按当前记录过滤结果,但第一个查询工作正常,而第二个查询只显示所有记录而不是当前记录。你能告诉我为什么两个查询都显示两种不同的结果吗?
答案 0 :(得分:0)
First Query仅显示记录,你获得MAX(PositionToEffectDate),显示人员详细信息。
第二个查询,当你正在进行分组时,为每个PersonIdNo,PositionIdNo组合显示一条记录。 PersonIdNo的MAX(PositionToEffectDate),由于您的选择参数,每个组合都会显示PositionIdNo。
答案 1 :(得分:0)
第一个查询将仅根据PositionToEffectDate列为您提供表中的最新条目,而第二个查询将根据您的group by子句为您提供每个人的最新记录。
注意:为了使第二个查询正常工作,必须从group by子句中删除PositionToEffectDate列。