0

次のことを行うには、助けが必要です。

メインテーブルには

ID (Primary Key)
DATE_TIME
STATE

サブテーブルには

ID (Primary Key)
DATE_TIME
LINE1

MainTable.STATE値が 100 から 200 に変化したときに、SubTable.Line1値を選択したいMainTable.DATE_TIME = SubTable.DATE_TIME

どちらかLAG()またはLEAD()関数がMainTable.STATEフィールド内のデータのこの遷移を検出できるようです。

LAG()またはLEAD()関数を使用するSQL文でこれを行うにはどうすればよいですか?

すべての迅速な対応に感謝します。MainTable.STATE 値は何でもかまいませんので、その値を sql stmt に含めることはできません。

4

3 に答える 3

0

私があなたの質問を理解していると仮定すると、次のようなことができます:

select Line1
  from (
select T1.[Id] as T1Id,
       T1.[Key] as T1Key,
       T1.[State] as T1State,
       T2.[Id] as T2Id,
       T2.[FKey] as T2Key,
       T2.[Line] as T2Line1,
       lag(T1.[State], 1, 100) OVER (order by T1.[Id]) as PriorState
  from T1
       left outer join T2 on T1.[Key] = T2.FKey
) as Data
 where [T1State] <> PriorState
   and [T1State] = 200
于 2015-06-11T14:35:37.943 に答える