あなたは
select * from activities where activity = 1
でオーダーの配置を取得し、あなたはおそらく:-)順放電を取得する方法を推測することができます
ので、2つは組み合わせて、高すぎる差が行だけを保つ:
select p.order_nr, p.date as placed, d.date as discharged
from (select * from activities where activity = 1) p
join (select * from activities where activity = 2) d
on d.order_nr = p.order_nr and datediff(d.date, p.date) > 1;
あなたは注文ごとの集約と同じを得ることができます:あなたはオープン注文を含めたい場合は
select
order_nr,
any_value(case when activity = 2 then date end) as placed,
any_value(case when activity = 1 then date end) as discharged
from activities
group by order_nr
having datediff(any_value(case when activity = 2 then date end),
any_value(case when activity = 1 then date end)) > 1;
、あなたはほとんど同じことをします。退院記録のない注文については、今日入力される可能性があります。そのため、昨日の注文はまだうまくいくかもしれませんが、前の注文はすでに長すぎます。ですから、二重記録がない場合は、今日の日付=であることをふりまとめたいと思います。
クエリ#1:
select p.order_nr, p.date as placed, d.date as discharged
from (select * from activities where activity = 1) p
left join (select * from activities where activity = 2) d
on d.order_nr = p.order_nr and datediff(coalesce(d.date, curdate()), p.date) > 1;
クエリ#2:私の質問にフォーマットするための
select
order_nr,
any_value(case when activity = 2 then date end) as placed,
any_value(case when activity = 1 then date end) as discharged
from activities
group by order_nr
having datediff(any_value(case when activity = 2 then date end),
coalesce(any_value(case when activity = 1 then date end), curdate())) > 1;
おかげSiyual! Greetings、Sai – Sai