すみません、動作確認していなかったので、間違いがあるようです。
まず、質問のSQL文の場合ATT.AttRecは最大値ですが、StaffCodeとSecCodeでグループ化しているので、StaffCodeとSecCodeが同じ場合のAttRecの最大値となってしまいます。
そこで最初のSELECTでは、テーブルの内容をそのまま表示するようにして、ATT.AttRecが最大である物のみ選択してあげれば解決します。
私の回答の場合条件が一致した全てのAttRecの最大値のみと比較しているので、答えは1件のみになってしますと思います、今回のSQLも動作確認はしていないので、まだミスが有るかはしれませんが、一応回答します。6行目に最初のテーブルとの一致条件を追加しました。
SELECT ATT.AttRec, STAFF.StaffCode, SEC.SecCode FROM PJK0001.dbo.ATT ATT, PJK0001.dbo.SEC SEC, PJK0001.dbo.STAFF STAFF WHERE ATT.AttStaffRec = STAFF.StaffRec AND ATT.AttSecRec = SEC.SecRec AND ATT.AttRec=(SELECT MAX(ATT2.AttRec) FROM PJK0001.dbo.ATT ATT2, PJK0001.dbo.SEC SEC2, PJK0001.dbo.STAFF STAFF2 WHERE ATT2.AttStaffRec = STAFF2.StaffRec AND ATT2.AttSecRec = SEC2.SecRec
AND ATT.AttStaffRec = ATT2.AttStaffRec AND ATT.AttSecRec = ATT2.AttSecRec
)
質問者
お礼
自宅でテストできる環境が無く返事遅くなり申し訳ありませんでした。
教えて頂いたコードを参考に以下のようにしてうまく出来ました。
SELECT ATT.AttRec, STAFF.StaffCode, SEC.SecCode
FROM PJK0001.dbo.ATT ATT, PJK0001.dbo.SEC SEC, PJK0001.dbo.STAFF STAFF
WHERE ATT.AttStaffRec = STAFF.StaffRec AND ATT.AttSecRec = SEC.SecRec AND ATT.AttRec=(SELECT MAX(ATT2.AttRec)
FROM PJK0001.dbo.ATT ATT2, PJK0001.dbo.STAFF STAFF2
WHERE ATT2.AttStaffRec = STAFF2.StaffRec
AND ATT.AttStaffRec = ATT2.AttStaffRec
GROUP BY STAFF2.StaffCode
)
大変助かりました。ありがとうございます。
SQL SERVER 2005以降なら
select ATT2.AttRec, STAFF.StaffCode, SEC.SecCode
from
( select AttRec,AttStaffRec,AttSecRec,
row_number() over(partition by AttStaffRec order by AttRec desc) as rn
from ATT ) as ATT2
join STAFF on ATT2.AttStaffRec = STAFF.StaffRec
and ATT2.rn = 1
join SEC on ATT2.AttSecRec = SEC.SecRec
でもいけるかもしれません。
お礼
自宅でテストできる環境が無く返事遅くなり申し訳ありませんでした。 教えて頂いたコードを参考に以下のようにしてうまく出来ました。 SELECT ATT.AttRec, STAFF.StaffCode, SEC.SecCode FROM PJK0001.dbo.ATT ATT, PJK0001.dbo.SEC SEC, PJK0001.dbo.STAFF STAFF WHERE ATT.AttStaffRec = STAFF.StaffRec AND ATT.AttSecRec = SEC.SecRec AND ATT.AttRec=(SELECT MAX(ATT2.AttRec) FROM PJK0001.dbo.ATT ATT2, PJK0001.dbo.STAFF STAFF2 WHERE ATT2.AttStaffRec = STAFF2.StaffRec AND ATT.AttStaffRec = ATT2.AttStaffRec GROUP BY STAFF2.StaffCode ) 大変助かりました。ありがとうございます。