我有一个包含以下数据的sql表:
Id department Amount
1 Accounting 10000
2 Catering 5000
3 Cleaning 5000
我想返回以下数据:
Id department Amount
1 Accounting 10000
1 50%
2 Catering 5000
2 25%
3 Cleaning 5000
3 25%
这意味着每条记录将在其下方返回第二条记录,并显示总金额的百分比。我尝试使用PIVOT表,但仍然无法定位 第二行紧挨着第一行。
有没有人做过类似的事情,我只需要一些准则即可。
答案 0 :(得分:0)
new JsonArray().add(new JsonArray(currencies)
答案 1 :(得分:0)
使用CTE
来计算总金额。
然后对表使用UNION ALL
和计算百分比的查询:
with cte as (select sum(amount) sumamount from tablename)
select id, department, amount
from tablename
union all
select id, concat(100 * amount / (select sumamount from cte), '%'), null
from tablename
order by id, amount desc
请参见demo。
结果:
> id | department | amount
> -: | :--------- | -----:
> 1 | Accounting | 10000
> 1 | 50% | null
> 2 | Catering | 5000
> 2 | 25% | null
> 3 | Cleaning | 5000
> 3 | 25% | null