请帮我解决以下问题, 我有下表,A列是季度号,b是货币,c是金额列。 对于例如第1季度有1,2和3种货币,但第2季度和第3季度只有2&3和3种货币。在这种情况下,我想找出丢失的货币并插入上一季度的金额。
Quarter currency Amount
1 1 45.000
1 2 425.000
1 3 145.000
3 2 400.000
3 3 145.000
4 3 145.000
输出:
Quarter currency Amount
1 1 45.000
1 2 425.000
1 3 145.000
2 1 45.000
2 2 425.000
2 3 145.000
3 1 45.000
3 2 425.000
3 3 145.000
4 1 45.000
4 2 425.000
4 3 145.000
季度是序列号,序列中不存在一些季度想要复制上一季度的值,而我们必须检查是否有可用的前一季度和下一季度。
答案 0 :(得分:2)
这有两个重要部分。首先是获得正确的行。您可以使用cross join
执行此操作。然后你需要获得上一季度的价值。这是一种方法,使用相关子查询:
select q.quarter, c.currency,
(select top 1 amount
from table t
where t.currency = c.currency and t.quarter <= q.quarter
order by quarter desc
) amount
from (select distinct quarter from table) q cross join
(select distinct currency from table) c;