[英]Get the data from previous month in sql query
我有每個月所有費用的數據。 例如,
我有每個月的費用表
+--------+--------+-----+--------+--------+
| Jan | Feb | Mar | Apr | May |
+--------+--------+-----+--------+--------+
| 899.20 | 0 | 0 | 0 | 899.20 |
| 439.38 | 485.29 | 0 | 0 | 482.29 |
+--------+--------+-----+--------+--------+
然后我在 output 中想要的每個月為 = '0',它將獲取上個月的數據,依此類推,直到它不等於 = '0'
這是否可以使用 oracle sql 或使用 xml。
我嘗試了下面的 oracle sql 查詢,例如我希望四月的值為 = 899.20
我用了case when condition,
case
when Apr = '0' then Mar
when Mar = '0' then Feb
when Feb = '0' then Jan
else Apr
end
在 XML 中是 if else 條件
<?xdofx:if apr = '0' then mar
else if mar = '0' then feb
else if feb = '0' then jan
else apr
end if?>
但是我知道的兩種情況都不起作用。 請幫忙
謝謝
您可以使用:
SELECT Jan,
CASE WHEN Feb > 0 THEN Feb
ELSE Jan END
AS Feb,
CASE WHEN Mar > 0 THEN Mar
WHEN Feb > 0 THEN Feb
ELSE Jan END
AS Mar,
CASE WHEN Apr > 0 THEN Apr
WHEN Mar > 0 THEN Mar
WHEN Feb > 0 THEN Feb
ELSE Jan END
AS Apr,
CASE WHEN May > 0 THEN May
WHEN Apr > 0 THEN Apr
WHEN Mar > 0 THEN Mar
WHEN Feb > 0 THEN Feb
ELSE Jan END
AS May
FROM table_name
其中,對於樣本數據:
CREATE TABLE table_name ( Jan, Feb, Mar, Apr, May ) AS
SELECT 899.20, 0, 0, 0, 899.20 FROM DUAL UNION ALL
SELECT 439.38, 485.29, 0, 0, 482.29 FROM DUAL;
輸出:
一月 | 二月 | 三月 | 四月 | 五月 -----: | -----: | -----: | -----: | -----: 899.2 | 899.2 | 899.2 | 899.2 | 899.2 439.38 | 485.29 | 485.29 | 485.29 | 482.29
db<> 在這里擺弄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.