最初に私はSQLのエキスパートではありません。だからこそ、助けを求めるのです。 私は、遅刻の出席日を含む従業員の出席記録を含むOracleビューを持っています。 列:グループに値を持つ最初の2つのローのフラグを設定します
従業員は、数値、日付は、インタイム、アウト時間、Late_Arrival私は、各従業員が月の2回の遅刻などを拳マークしたい
(後半現在は「1」としてマーク取得した場合) "G"。クエリから。
私にこれを手伝ってください。
SELECT l.EMP_NO,l.ACCOUNT_DATE,l.IN_TIME,l.OUT_TIME,l.LATE_COMING_15 as
late_arrival,
(case when l.LATE_COMING_15 = 1 and
row_number() over (partition by trunc(l.ACCOUNT_DATE),l.LATE_COMING_15
order by l.IN_TIME
) <= 2
then 'G'
end) as flag
from LATE_EARLYDEP l
WHERE trunc(l.ACCOUNT_DATE) >= to_date('&DATE_FROM','dd/MM/yy') AND
trunc(l.ACCOUNT_DATE) <=to_date ('&DATE_TO','dd/MM/yy')
order by 1,2`
しかし、依然として必要な結果が得られていません。例の従業員番号0005の羽ばたき日は02/03/2017 & 06/03/2017でなければなりません。私はこのロジックhttps://drive.google.com/open?id=0B6Xw1eXeLyG7M3dtbmJUek5OdG8
を有するもの遅いレコードをマークします。以下のgoogleドライブの結果を参照してください。どうもありがとうございます。 https://drive.google.com/open?id=0B6Xw1eXeLyG7MkJPd2lTamRVa2M –
@KavinduAnthony。 。 。私は、問題は 'by by by partition by'の 'emp_no'の欠如だと思っています。 –