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;
当然,你需要有足够的列来覆盖你关心的数量。
我正在为一群人苦苦挣扎。我有一个查询,它为一些已计算的股票提取两行数据。它的行 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;
当然,你需要有足够的列来覆盖你关心的数量。