2009-07-20 7 views
2

タイトルはおそらくあまり意味がありませんので、ここでは説明をしていきます。私は単一を返しますビューのためのSELECT文を必要とする
最後の日付レコードが重複しているテーブルに重複しないレコードが選択されています

id int, 
caseID int, 
eventDate date/time 

ケーステーブル:

id int, 
caseNo string 

イベントテーブル

はMSSQL2005で2つのテーブルを考えてみましょう行: cases.caseNo、events.eventDate(日付部分のみ)

これらは、多くの場合、events.caseID = cases.idによって関連付けられています。ケースレコードごとに複数のイベントレコードがあります。私はresults.eventDateの最新の/最新の値を持つ結果セットを単一のcaseNoにします。

ありがとうございます。

答えて

3

あなただけそうのように、最新の日付をつかむためにmax機能を使用することができます。

select 
    c.caseNo, 
    max(e.eventDate) as eventDate 
from 
    cases c 
    inner join events e on 
     c.id = e.caseid 
group by 
    c.caseNo 
+0

シンプルでクリーナーです。 –

5

はこれを行うための5つの方法があり、これらは、ここで説明されていますIncluding an Aggregated Column's Related Values

このような基本的なものであればをあなただけの日付と日付

のidと使用最大によってケース

select e.*,c.* 
from(
select caseID,max(evendate) as MaxEventDate 
from Events 
group by caseID) x 
join Cases c on c.Id = x.caseID 
join Events e on e.eventDate = x.MaxEventDate 
and e.caseID = x.caseID 

そうでない場合は、IDだけのグループよりも多くを必要とします

select max(e.EventDate) as MaxEventDate, 
    c.CaseNo 
from 
    Cases c 
    join Events e on 
     e.caseid = c.id 
group by c.caseNo 
+0

応答、SQLMenaceありがとう。記事へのリンクは便利です。 – kenalacom

関連する問題