0
従業員に対して行われた最新の支払いのすべてのテーブルを作成しようとしています。元のテーブルには、開始してから従業員に支払ったすべての支払いがあります。最新の日付のレコードのみを私に渡すために派生テーブルを作成しました。SQL Group派生テーブルの問題
お支払い日が同じ場合でもまだ重複していますが、この場合、これらの支払いを一緒に追加して1行に表示したいとします。
以下は私の作業コードです。
SELECT T1.EmployeeCode
, T2.Staff_Number
, T2.Firstname + ' ' + T2.Surname AS Name
, T1.PaymentDate
, T1.p1
, T1.p2
, T1.p3
FROM DB1.dbo.PARTIFPSNI AS T1
--This section is supposed to return only the latest date
INNER JOIN (
SELECT EmployeeCode, MAX(PaymentDate) as MaxDate
FROM DB1.dbo.PARTIFPSNI
GROUP BY EmployeeCode
) T1A ON T1.EmployeeCode = T1A.EmployeeCode and T1.PaymentDate = T1A.MaxDate
LEFT JOIN DB2.dbo.Personnel_Records AS T2 ON (T1.EmployeeCode = T2.Staff_Number)
これは以下を返します。
私はP1、P2 & P3を一緒に合計する問題を抱えているようです。私はGROUP BY関数を2回使用しようとしているので、これを考えています。
いくつかのAND/OR混乱?物事をより明確にするために、WHERE句に余分なかっこを追加します。 – jarlh
質問を編集し、サンプルデータと希望の結果を提供してください。 –
途中で疑似外部結合です。外側に結合された行の列はnullになります。したがって、 'T2.Staff_Number IS NOT NULL'は外側に結合された行では決してtrueにならず、結合は単なる内部結合になります。 –