すべての従業員の最初のログイン時間と最後のログアウト時間を日付範囲内で見つける必要があります。これまでのところ私は、GROUP BY句とは異なるアプローチを試みたが、私はこのクエリは、私は私が探していた。しかし、これは私に重複した結果を与えるもの達成MySQL - すべての従業員を取得する最初のパンチと最後のパンチ時間範囲内の時間
SELECT p1.EmpName, p1.LogDate,
(SELECT MIN(LogTime)
FROM log as p2
WHERE p2.EmpName=p1.EmpName
GROUP BY p2.EmpName) as login,
(SELECT MAX(LogTime)
FROM log as p2
WHERE p2.EmpName=p1.EmpName
GROUP BY p2.EmpName) as logout,
LogID from log as p1
WHERE LogDate
BETWEEN '2017-08-05 00:00:00'
AND '2017-08-010 00:00:00'
GROUP BY SrNo
を試してみました欲しいものを得ることができません。ここではここでログ
の実際のテーブルには、私は2番目の絵などが、重複行せずに同じ結果が欲しい、これまで
を達成したものです。私は、OVER & PARTITIONがMySQLでは利用できないことが分かりました。私はセルフジョインには不満です。
あなたは、MySQLに 'distinct'機能を使用しようとしましたか?これは複写に役立ち、 – Noob
を選択します。EmpName coloumnでDISTINCTを使用すると、別の日付(同じEmpName)から行が削除され、1つの特定の日付のみが表示されます。 –
その場合、順序を組み合わせてグループを切り替えることができます – Noob