PL/SQL Group By question 根据行号添加额外的列

PL/SQL Group By question adding extra columns dependent on row numbers

我正在为一群人苦苦挣扎。我有一个查询,它为一些已计算的股票提取两行数据。它的行 returns 是这样的。

但是,我需要它显示在一行中,如下所示。

此示例只进行了两次计数,但其他示例最多可以有 4 行,因此可能需要计数 3 和计数 4 列。计数差异需要是最后一次计数的数量 - 第一行原始数量。有一个 dstamp 字段可用于识别每次计数发生的时间。

我当前用来提取此数据的SQL低于

Select bin, sku, original_qty, (original_qty + count_qty) countQty, count_difference, quantity, counter
FROM stock_counts
order by bin, dstamp DESC

您甚至没有在结果中返回 dstamp。但是如果你想转轴,你可以使用条件聚合。目前还不清楚所有列的含义。但是您可以使用以下方法按时间轻松调整数量:

select bin, sku,
       max(case when seqnum = 1 then countQty end) as original_qty,
       max(case when seqnum = 2 then countQty end) as qty1,      
       max(case when seqnum = 3 then countQty end) as qty2,        
       max(case when seqnum = 4 then countQty end) as qty3 
from (select sc.*,
             row_number() over (partition by sku, bin order by dstamp) as seqnum
      from stock_counts sc
     ) sc
group by sku, bin;

当然,你需要有足够的列来覆盖你关心的数量。