2

2 つのテーブルがあると仮定します。1 つには、lease_period と呼ばれる次の列があります。

tenant_trading_name、suite_id、lease_id、build_id

もう 1 つは、次の内容を含む lease_period_audit と呼ばれます。

audit_date, audit_type, tenant_trading_name, suite_id, lease_id, building_id

lease_period でレコードが更新され、lease_period_audit で「更新済み」ステータスのエントリが作成されるたびに。tenant_trading_name フィールドのみに加えられたすべての更新を見つけようとしていますが、成功していません。これまでのところ、次のものがあります。

select              lpa.*
from                property.lease_period_audit lpa
inner join          property.lease_period lp on lpa.suite_id = lp.suite_id and lpa.lease_id = lp.lease_id and lpa.building_id = lp.building_id
where               audit_type = 'Updated'
                    and lp.tenant_trading_name <> lpa.tenant_trading_name
order by            1 desc  

ここで私の思考プロセスのどこに欠陥がありますか? これはどのように行うことができますか/これについてどのように考えるべきですか?

4

2 に答える 2

1

次のように考える必要があります (疑似コード):

編集: lpa テーブルに実際にすべてのデータがあることを以前は知りませんでした。LP と結合する必要はありません。

select lpa.*
from   lpa 
join   lpa_before on 
           lpa_before.id = lpa.id and 
           lpa_before.date = 
                  (select max(date) from lpa3 where lpa3.date < lpa.date and lpa.id = lpa3.id)
where  auditytype = 'update' and lpa.name <> lpa_before.name

説明できれば幸いです..(それは簡単な解決策ではありませんが、それが私の頭に浮かぶことです)

英語で:

LPA レジスターを選択します。元のLPAの直前のLPAとなる別のLPAと合流。これを LPA_BEFORE と呼びます。LPA_BEFORE に参加するには、LPA と LPA_BEFORE のすべての ID を比較する必要があり、LPA_BEFORE の日付は、元の LPA よりも古い日付を持つ LPA の最大値でなければなりません。LPA の名前を LPA_BEFORE と比較します。

于 2012-01-07T03:31:00.007 に答える