将数字格式化为货币金额
Formatting number as currency amount
我想为我的 SQL 比萨餐厅数据库创建一个 "sales report"。当我尝试使用 sum(order_amount) 运行 SELECT 查询时,该列未格式化。我正在使用 Oracle SQL。这是代码:
column order_amount heading "Order Amount" format ',999,999.00';
select order_id, count(order_id) as "Number of Orders", sum(pizza_quantity) as "Pizzas Sold",
sum(order_amount) as "Total Profit"
from order_details group by order_id;
这是输出:
SQL> select order_id, count(order_id) as "Number of Orders",sum(pizza_quantity) as "Pizzas Sold",
2 sum(order_amount) as "Total Profit"
3 from order_details group by order_id;
Order ID Number of Orders Pizzas Sold Total Profit
---------- ---------------- ----------- ------------
1 2 5 105
6 1 2 20
2 2 6 165
4 2 12 130
5 2 6 80
8 1 7 140
3 2 4 80
7 1 6 120
9 1 8 120
10 1 9 270
10 rows selected.
有什么方法可以将总利润列显示为货币格式?
您可以尝试使用 to_char()
。
...
to_char(sum(order_amount), ',999,999.00')
...
您可以使用 数字格式建模元素 作为 FML9,999.99
或 G990D00
作为 to_char
函数的第二个参数,如下例所示:
SQL> alter session set nls_currency='$';
SQL> alter session set NLS_NUMERIC_CHARACTERS = '.,';
SQL> with tab(order_ID,order_amount) as
(
select 1,255.51 from dual union all
select 1,750.33 from dual union all
select 6,420.39 from dual union all
select 2,790.00 from dual union all
select 2,375.05 from dual
)
select to_char(sum(order_amount),'FML9,999.99') as "Total Profit"
from tab
group by order_ID
union all
select to_char(sum(order_amount),'G990D00') as "Total Profit"
from tab
group by order_ID
Total Profit
,005.84
0.39
,065.05
,005.84
0.39
,065.05
如果您的问题具体是关于 SQL*Plus 列格式,问题是您为名为 order_amount
的列定义了格式,但在查询中它被称为 "Total Profit"
:
column order_amount heading "Order Amount" format ',999,999.00'
如果您更改查询以便将所需的列命名为 order_amount
,则将使用定义的格式:
select order_id, count(order_id) as "Number of Orders", sum(pizza_quantity) as "Pizzas Sold"
, sum(order_amount) as order_amount
from order_details
group by order_id;
(顺便说一句,除非您的成本为零,否则我怀疑总订单金额是否全是利润,在这种情况下我想投资您的披萨业务。)
我想为我的 SQL 比萨餐厅数据库创建一个 "sales report"。当我尝试使用 sum(order_amount) 运行 SELECT 查询时,该列未格式化。我正在使用 Oracle SQL。这是代码:
column order_amount heading "Order Amount" format ',999,999.00';
select order_id, count(order_id) as "Number of Orders", sum(pizza_quantity) as "Pizzas Sold",
sum(order_amount) as "Total Profit"
from order_details group by order_id;
这是输出:
SQL> select order_id, count(order_id) as "Number of Orders",sum(pizza_quantity) as "Pizzas Sold",
2 sum(order_amount) as "Total Profit"
3 from order_details group by order_id;
Order ID Number of Orders Pizzas Sold Total Profit
---------- ---------------- ----------- ------------
1 2 5 105
6 1 2 20
2 2 6 165
4 2 12 130
5 2 6 80
8 1 7 140
3 2 4 80
7 1 6 120
9 1 8 120
10 1 9 270
10 rows selected.
有什么方法可以将总利润列显示为货币格式?
您可以尝试使用 to_char()
。
...
to_char(sum(order_amount), ',999,999.00')
...
您可以使用 数字格式建模元素 作为 FML9,999.99
或 G990D00
作为 to_char
函数的第二个参数,如下例所示:
SQL> alter session set nls_currency='$';
SQL> alter session set NLS_NUMERIC_CHARACTERS = '.,';
SQL> with tab(order_ID,order_amount) as
(
select 1,255.51 from dual union all
select 1,750.33 from dual union all
select 6,420.39 from dual union all
select 2,790.00 from dual union all
select 2,375.05 from dual
)
select to_char(sum(order_amount),'FML9,999.99') as "Total Profit"
from tab
group by order_ID
union all
select to_char(sum(order_amount),'G990D00') as "Total Profit"
from tab
group by order_ID
Total Profit
,005.84
0.39
,065.05
,005.84
0.39
,065.05
如果您的问题具体是关于 SQL*Plus 列格式,问题是您为名为 order_amount
的列定义了格式,但在查询中它被称为 "Total Profit"
:
column order_amount heading "Order Amount" format ',999,999.00'
如果您更改查询以便将所需的列命名为 order_amount
,则将使用定义的格式:
select order_id, count(order_id) as "Number of Orders", sum(pizza_quantity) as "Pizzas Sold"
, sum(order_amount) as order_amount
from order_details
group by order_id;
(顺便说一句,除非您的成本为零,否则我怀疑总订单金额是否全是利润,在这种情况下我想投资您的披萨业务。)