0

データベースに次の 2 つのテーブルがあります。1 つのテーブルは person テーブルで、もう 1 つのテーブルは Entry テーブルです。entry テーブルは、部署への入室者を記録します。

人物表

    Person                  
Person_ID   Person_NIC  Person_Name Person_Last_Name    Person_Age  State
1           121212          ABC         BCD              12         ACTIVE
2           212121          ABB         BBB              13         NONACTIVE
3           111111          BBB         CCC              14         ACTIVE

エントリーテーブル

ENTRY           
Entry_ID  Person_ID Entry_Escort    Entry_Date  
1         1           David         20121210    
2         1           David         20130110    
3         1           David         20130111    
4         1           David         20130112    
5         1           David     20130113    
6         2           David     20121210    
7         2           David     20130110    
8         2           David     20130111    
9         2           David     20130112    
10        2           David     20130113    

次のシナリオでは、SQL を作成する必要があります。1 月のデータベースでアクティブでない人の最終エントリ日を見つける必要があります。誰でもクエリを手伝ってくれませんか。助けてくれてありがとう。

4

4 に答える 4

1

これを試して::

Select 
p.*,
MAX(Entry_Date) 
from 
persons p
inner join entry ep on (p.Person_NIC=ep.Entry_ID)

where State='NONACTIVE'
GROUP BY ep.Entry_ID
于 2013-01-14T11:26:18.197 に答える
1

これは次のように簡単です。

SELECT p.Person_ID, MAX(e.Entry_Date) as MaxEntryDate
FROM 
 Person p 
 INNER JOIN Entry e
   ON p.Person_NIC = e.EntryID
WHERE p.State = 'NONACTIVE'
   AND Entry_Date  BETWEEN 20130101 AND 20130131
GROUP BY p.Person_ID
于 2013-01-14T11:27:48.510 に答える
1

これはあなたが必要とすることをするはずです:

select p.person_id, p.person_nic, p.Person_Name, p.Person_Last_Name,
       max(e.entry_date) max_entry_date
 from person p
      inner join entry e
              on e.entry_id = p.person_nic
where p.state = 'NONACTIVE'
group by p.person_id, p.person_nic, p.Person_Name, p.Person_Last_Name

.ps データベース テーブルに AGE を保存するのは良くありません。常に最新の状態に保つ必要があるからです。生年月日を保存し、その場で(またはビュー/仮想列で)年齢を計算することをお勧めします

于 2013-01-14T11:27:40.270 に答える
1

これを試してみてください:1月の月が必要なときに更新されます...

SQLFIDDLE デモ

   Select p.person_id, p.person_nic,
   p.Person_Name,
   p.Person_Last_Name,max(e.entry_date )
   from person p
   inner join entry e 
   on (p.Person_id = e.person_id)
   where p.State='NONACTIVE'
   and month(e.entry_date) = 1
   GROUP BY p.person_nic, e.Entry_ID
   ;

| PERSON_ID | PERSON_NIC | PERSON_NAME | PERSON_LAST_NAME |MAX(E.ENTRY_DATE ) |
---------------------------------------------------------------------------------
|         2 |     212121 |         ABB |              BBB | January, 13 2013 |
于 2013-01-14T11:37:33.120 に答える