显示选择日期范围内第一天的记录,选择日期范围内结束的日期。日期范围可以是任何日期

问题描述 投票:-1回答:2

我需要显示用户输入日期范围内的库存和关闭库存。

对于开放式库存,它应该在选定日期范围的第一天取库存,而关闭库存的它应该在选定日期范围的结束日期取库存。

假设我有1月3日至1月30日的数据(在数据库中)用户已选择日期范围(1月1日至1月31日),因此在开放式库存中应显示< [1月3日的库存,并在接近的库存中显示1月30日的库存

如何在SAP HANA Studio中执行此操作?
sql hana
2个回答
0
投票
对源数据的外观进行猜测。我试图解决您的问题。

with data as ( --here are some example data select to_date('2019-12-31','yyyy-mm-dd') d ,-1 stock from dual union all select to_date('2020-01-03','yyyy-mm-dd') d ,1 stock from dual union all select to_date('2020-01-04','yyyy-mm-dd') d ,2 stock from dual union all select to_date('2020-01-30','yyyy-mm-dd') d ,3 stock from dual union all select to_date('2020-02-01','yyyy-mm-dd') d ,2 stock from dual ) ,filt_data as ( select * from data where d between to_date('2020-01-01','yyyy-mm-dd') and to_date('2020-01-31','yyyy-mm-dd') ) , min_date as( select min(d) d from filt_data ) , max_date as( select max(d) d from filt_data ) select (select d from filt_data where d = (select d from min_date)) open_stock_date ,(select stock from filt_data where d = (select d from min_date)) open_stock ,(select d from filt_data where d = (select d from max_date)) close_stock_date ,(select stock from filt_data where d = (select d from max_date)) close_stock from dual ;


0
投票
以下查询可能会满足您的需求:

SELECT MAX(CASE WHEN S.dateStock = DT.minDate THEN S.dateStock END) AS openDate, MAX(CASE WHEN S.dateStock = DT.minDate THEN S.value END) AS openStock, MAX(CASE WHEN S.dateStock = DT.maxDate THEN S.dateStock END) AS closeDate, MAX(CASE WHEN S.dateStock = DT.maxDate THEN S.value END) AS closeStock FROM stock S JOIN( SELECT min(dateStock) as minDate, max(dateStock) as maxDate FROM stock WHERE dateStock BETWEEN '2020-01-01' AND '2020-01-31' ) DT ON S.dateStock = DT.minDate OR S.dateStock = DT.maxDate

SEE DEMO HERE
© www.soinside.com 2019 - 2024. All rights reserved.