名前に関連付けられた最新のアドレスを取得しようとしています(通常、名前ごとに複数のアドレスがあるため)。私は、私の結合でサブクエリで次のクエリを作成しました。パーティーごとに1つのアドレスを取り戻すことができますが、アドレス/都市が常に一致するわけではありません。また、返されるアドレスは最新のアドレスではありません(関連する日付ごと)。 MAXを間違ってサブクエリを書いていますか?正しい都市が正しい住所になっていることを確認する方法はありますか?結合内の別々の最近のアドレス(複数のフィールド)のサブクエリ
select
[demographics].[DOB],
Address1,
Address2,
City,
State,
Zip
from [demographics]
left join (select
[address].[demographic_ID],
max([address].[address1]) as Address1,
max([address].[address2]) as Address2,
max([address].[city]) as City,
max([states].[state_title]) as 'State',
max([dbo].[address].[zip]) as Zip
from [address]
inner join [states] on [address].[state_ID] = [states].[state_ID]
group by [address].[demographic_ID]) as AddressSub
on [demographics].[demographic_ID] = AddressSub.[demographic_ID];
はい、間違って書いています。 MAXの代わりにTOP 1をどのように使用するかについて考えてみましょう。 –
「Row_Number over(Date?ID?[最新のフィールドを決定するフィールドはどれか?])」のようなアナリシスを使用して、row_number 1に制限する方が簡単だと思います。 – xQbert
はいちなみに、どのアドレスが最新であるかを判断する列が必要ですが、これは私のクエリでは使用されていません。 –