私は現在、私が持っている問題を解決しようとしています。私は、STATE 2 例、オブジェクトAのオブジェクトの過去のこと日数のカウントを返すSQLを記述STATE 2 + 02-02で04-02 10から02まで滞在する必要があるCount day SQL Server
| ID | Op | Object | STATE | Timestamp |
| 01 | 1 | A | 1 | 01-02-2016|
| 02 | 1 | A | 2 | 04-02-2016|
| 03 | 1 | A | 1 | 10-02-2016|
| 04 | 1 | A | 3 | 01-02-2016|
| 05 | 2 | A | 2 | 02-02-2016|
| 06 | 3 | A | 1 | 05-02-2016|
| 07 | 3 | A | 2 | 10-11-2016|
05-02に、10-11から今日まで6日+ 3日+ 4日です。
SQL return 13
現在、コードで作成していますが、SQL抽出に必要です。どのように処理するのか分かりません。 SQLで可能ですか?あなたが外select
にフィルタリング条件を移動させることができ、
select object,
sum(case when state = 2 then datediff(day, timestamp, coalesce(next_timestamp, getdate()))
else 0
end) as days_state_2
from (select t.*,
lead(timestamp) over (partition by object order by timestamp) as next_timestamp
from t
) t
group by object;
または::
は、私はあなたが集約と日付ロジックと一緒にlead()
をしたいと思います
私はこの表を理解していません。 01-02-2016オブジェクトAは状態1(レコード01)と状態3(レコード04)に切り替えましたか? 02-02-2016から03-02-2016までは状態1(レコード01から)と状態2(レコード05から)でした。 04-02-2016に状態2が2回(レコード05と02から)、05-02-2016に状態2(レコード02から)と状態1(レコード06から)がありました。したがって、オブジェクトには複数の状態があり、IDで順序付けして重複する日付範囲を調べることによって、どの状態をいくつの状態だけで判断できますか? –