1

私は Access のコーディングに関してはあまり熟練していません。むしろ、SQL を使用する方が好きです。特定の分野で一部の従業員を引っ張るためにコードを設定しました。しかし、1 つのテーブルには従業員の全履歴が含まれているため、REC EFF STT DT フィールドを取得しました。これは、従業員が開始した可能性のある各ポジションを示しています。最新の(彼らの現在の)仕事だけが必要です。MAX DATE を含む WHERE ステートメントにサブクエリが必要であることはわかっていますが、正しくフォーマットする方法がわかりません。

SELECT O896IA_VEMPPRSA.EMP_NA, O896IA_VEMPPRSA.SYS_EMP_ID_NR, 
     ([O896IA_VEMPPRSA].[REG_NR]) & ([O896IA_VEMPPRSA].[DIS_NR]) AS RRDD, 
     O867IA_VJOBHST.BUS_UNT_REF_NR, O867IA_VJOBHST.REC_EFF_STT_DT
FROM O867IA_VJOBHST 
INNER JOIN O896IA_VEMPPRSA 
   ON O867IA_VJOBHST.SYS_EMP_ID_NR = O896IA_VEMPPRSA.SYS_EMP_ID_NR 
WHERE (((([O896IA_VEMPPRSA].[REG_NR]) & ([O896IA_VEMPPRSA].[DIS_NR])) 
       IN ("2010","2108","2029","2230","2580")) AND 
      ((O867IA_VJOBHST.BUS_UNT_REF_NR) IN     
      ("ISBOP","ISCIM","ISGAP","ISCRA","ISCTP","ISOPS","ISSCS","ISSSP","ISTTG")))
GROUP BY O896IA_VEMPPRSA.EMP_NA, O896IA_VEMPPRSA.SYS_EMP_ID_NR, 
      ([O896IA_VEMPPRSA].[REG_NR]) & ([O896IA_VEMPPRSA].[DIS_NR]), 
       O867IA_VJOBHST.BUS_UNT_REF_NR, O867IA_VJOBHST.REC_EFF_STT_DT;

単純に MAX DATE を使用することはできません。MAX DATE には、彼らが経験した各ジョブのレコードが含まれるためです。彼らの最新の日付が必要なだけです。

4

1 に答える 1

1

where句に条件を追加できるはずです:

and O867IA_VJOBHST.REC_EFF_STT_DT = (select max([hist].REC_EFF_STT_DT) 
from O867IA_VJOBHST as [hist] 
where [hist].SYS_EMP_ID_NR = O896IA_VEMPPRSA.SYS_EMP_ID_NR)

これは、最大日付が同じエントリが 2 つ存在しないことを前提としています。

于 2013-05-06T19:16:42.233 に答える