选择列的下一个值,其中在SQL的不同列中找到最后一次出现的特定值

date        buys/    quantity   Rolling Sum
            sell
08-AUG-19   BUY      100       -
13-SEP-19   SELL    -100       0
26-SEP-19   BUY      200      200
28-SEP-19   SELL    -50       150
29-SEP-19   SELL    -150       0

我需要最后购买日期是在该数量最近全部售罄之后。

在上述情况下,它在19年9月13日售罄两次,第二个在19年9月29日售罄,我需要将其值定为19年9月26日(因为这是最新的一次购买)在最近售罄的州之前)

预期结果:

26-sep-19 
MaiRongJian 回答:选择列的下一个值,其中在SQL的不同列中找到最后一次出现的特定值

  

在最近的售罄状态之前获取最新的购买信息

这里是一种选择:

select max(date)
from mytable t
where 
    buy_sell = 'BUY'
    and date < (
        select max(date) 
        from mytable 
        where rolling_sum = 0 and buy_sell = 'SELL'
)

demo on DB Fiddle 及其示例数据将返回:

| max(date)  |
| :--------- |
| 2019-09-26 |

注意:假设

1)您将日期存储为类似日期的数据类型,而不是字符串...

2)rolling_sum是表中的实际列

本文链接:https://www.f2er.com/3136914.html

大家都在问