SQL 检查订单日期更改的频率
SQL which checks, how often a date of an order has changed
我想构建一个 SQL 代码,它显示订单日期随时间变化的频率。我们的数据集如下 table:
我想说的话:
- 检查 Material“1299190”的 "Time = 1" 和 "Time = 2" -> isDateEqual?如果否,则为 0,否则为 1
- 检查 "Time = 2" 和 "Time = 3" 之间 Material “1299190” -> isDateEqual?如果否,则为 0,否则为 1
- 检查 Material“1299190”的 "Time = 3" 和 "Time = 4" -> isDateEqual?如果否,则为 0,否则为 1
=最后应该显示,日期已经改变了一次
我已经尝试构建解决方案。
我希望你们能帮我解决这个问题。
谨致问候,
M
这是某种间隙和孤岛问题。假设你的 RDBMS 支持 window 函数,你可以用 lag()
和 sum()
:
来解决
select
Auftrag,
sum(case when BasicStart != lagBasicStart then 1 else 0 end) changeCount
from (
select
t.*,
lag(BasicStart) over(partition by Auftrag order by time) lagBasicStart
from mytable
) t
group by Auftrag
很难理解您的问题,SQL 可能因数据库而异。你应该把你试过的东西。根据我的理解,这是一个可能的解决方案:
SELECT count(*)
FROM table
WHERE auftrag = x
AND time <= y AND time >= z
ADN bereistellung = basicstart;
我想构建一个 SQL 代码,它显示订单日期随时间变化的频率。我们的数据集如下 table:
我想说的话:
- 检查 Material“1299190”的 "Time = 1" 和 "Time = 2" -> isDateEqual?如果否,则为 0,否则为 1
- 检查 "Time = 2" 和 "Time = 3" 之间 Material “1299190” -> isDateEqual?如果否,则为 0,否则为 1
- 检查 Material“1299190”的 "Time = 3" 和 "Time = 4" -> isDateEqual?如果否,则为 0,否则为 1
=最后应该显示,日期已经改变了一次
我已经尝试构建解决方案。
我希望你们能帮我解决这个问题。
谨致问候, M
这是某种间隙和孤岛问题。假设你的 RDBMS 支持 window 函数,你可以用 lag()
和 sum()
:
select
Auftrag,
sum(case when BasicStart != lagBasicStart then 1 else 0 end) changeCount
from (
select
t.*,
lag(BasicStart) over(partition by Auftrag order by time) lagBasicStart
from mytable
) t
group by Auftrag
很难理解您的问题,SQL 可能因数据库而异。你应该把你试过的东西。根据我的理解,这是一个可能的解决方案:
SELECT count(*)
FROM table
WHERE auftrag = x
AND time <= y AND time >= z
ADN bereistellung = basicstart;