microsoft Access Database
私はこのように2つのテーブルを持っています
1.HR_Personnel
+-----+----------+----------------------+
| ID | NIP | Name |
+----------------+----------------------+
| 1 | 200 | Teguh |
| 2 | 201 | Supomo |
| 3 | 203 | DHINI ADHITYAS M |
| 4 | 204 | Dhani Amanda |
+-----+----------+----------------------+
TA_Record_Info
+---------+-----------------------+
| Per_Code| Date_Time |
+---------+-----------------------+
| 3 | 2013-02-20 07:45:57 |
| 2 | 2013-02-20 07:46:13 |
| 1 | 2013-02-20 08:48:07 |
| 1 | 2013-02-20 15:53:40 |
| 3 | 2013-02-20 16:01:02 |
| 2 | 2013-02-21 07:31:57 |
| 3 | 2013-02-21 07:39:29 |
| 3 | 2013-02-21 15:51:47 |
| 2 | 2013-02-21 16:11:21 |
| 2 | 2013-02-22 07:47:45 |
| 1 | 2013-02-22 07:53:31 |
| 3 | 2013-02-22 16:01:43 |
| 2 | 2013-02-22 16:11:19 |
| 1 | 2013-02-22 16:15:26 |
+---------+-----------------------+
期待される結果編集
+-------+-----------------+-------------+-------------+-------------+
| NIP | Nama | adate | InTime | OutTime |
+-------+-----------------+-------------+-------------+-------------+
| 201 | Teguh | 2013-02-20 | 08:48:07 | 15:53:40 |
| 202 | Supomo | 2013-02-20 | 07:46:13 | - |
| 203 | DHINI ADHITYAS M| 2013-02-20 | 07:45:57 | 16:01:02 |
| 204 | Dhani Amanda | 2013-02-20 | - | - |
| 201 | Teguh | 2013-02-21 | - | - |
| 202 | Supomo | 2013-02-21 | 07:31:57 | 16:11:21 |
| 203 | DHINI ADHITYAS M| 2012-08-21 | 07:39:29 | 15:51:47 |
| 204 | Dhani Amanda | 2013-02-21 | - | - |
| 201 | Teguh | 2012-08-22 | 07:53:31 | 16:15:26 |
| 202 | Supomo | 2012-08-22 | 07:47:45 | 16:11:19 |
| 203 | DHINI ADHITYAS M| 2012-08-22 | - | 16:01:43 |
| 204 | Dhani Amanda | 2013-02-22 | - | - |
+-------+-----------------+-------------+-------------+-------------+
私はこのクエリ編集を試しました
SELECT p.NIP AS NIP,
p.Name AS Nama,
Format (a.Date_Time, 'yyyy-mm-dd') as adate,
IIF((Min(a.Date_Time) <> Max(a.Date_Time)),
Format (Min(a.Date_Time), 'hh:mm:ss'),
IIF( Format (Min(a.Date_Time), 'hh:mm:ss') < '12:00:00',
Format (Min(a.Date_Time), 'hh:mm:ss'),
'-'
)
)as InTime,
IIF((Max(a.Date_Time) <> Min(a.Date_Time)),
Format (Max(a.Date_Time), 'hh:mm:ss'),
IIF( Format (Max(a.Date_Time), 'hh:mm:ss') > '12:00:00',
Format (Max(a.Date_Time), 'hh:mm:ss'),
'-'
)
)as OutTime
FROM HR_Personnel AS p
LEFT JOIN TA_Record_Info a
ON p.ID = a.Per_Code
GROUP BY p.Per_Code,
p.Per_Name,
Format (a.Date_Time, 'yyyy-mm-dd')
Order BY Format (a.Date_Time, 'yyyy-mm-dd'),
Right(p.Per_Code,2),
p.Per_Name
しかし、結果は次のように表示されますEDIT
+-------+-----------------+-------------+-------------+-------------+
| NIP | Nama | adate | InTime | OutTime |
+-------+-----------------+-------------+-------------+-------------+
| 204 | Dhani Amanda | | | - |
| 201 | Teguh | 2013-02-20 | 08:48:07 | 15:53:40 |
| 202 | Supomo | 2013-02-20 | 07:46:13 | - |
| 203 | DHINI ADHITYAS M| 2013-02-20 | 07:45:57 | 16:01:02 |
| 202 | Supomo | 2013-02-21 | 07:31:57 | 16:11:21 |
| 203 | DHINI ADHITYAS M| 2012-08-21 | 07:39:29 | 15:51:47 |
| 201 | Teguh | 2012-08-22 | 07:53:31 | 16:15:26 |
| 202 | Supomo | 2012-08-22 | 07:47:45 | 16:11:19 |
| 203 | DHINI ADHITYAS M| 2012-08-22 | - | 16:01:43 |
+-------+-----------------+-------------+-------------+-------------+
を使用して参加したままにしたために、クエリの結果が発生したと思います
ON p.ID=a.Per_Code
EDIT so teguh are not present at 2013-02-21 日付は表示されません。表は、2013 年 2 月 22 日から 2013 年 2 月 22 日まで欠席した Dhani Amanda のみを示しています。
従業員のルームメイト テーブルがすべての特定の日付に存在しないこと、または Intime と OutTime でマークされた日付が空であることを示したかっただけです。
最後に、クエリから何を変更する必要がありますか? あなたが私を助けてくれることを願っています。ありがとう。
アップデート
私は間違っていました。表の結果と期待される結果の表の間で逆さまに書きます。そして、結果の表は存在Teguh
しない従業員として存在しません。説明を変更しました。そして、クエリで
SELECT p.NIP AS NIP,
p.Name AS Nama,
によって変更
SELECT p.NIP AS NIP,
p.Name AS Nama,
EDIT
タグで質問を編集しました。ありがとう。