作为标题,我想对2列数据求和,并在另一列中显示结果。下面是一个示例,请注意。谢谢。
这是我的数据
SELECT
ES.SHPMNT_REF AS "File No",
(SELECT MAX(EXPORT_SHIPPING_ORDERS.EXTRA_20_CONTAINERS) FROM EXPORT_SHIPPING_ORDERS WHERE
EXPORT_SHIPPING_ORDERS.SHPMNT_REF = ES.SHPMNT_REF) AS "20'",
(SELECT MAX(EXPORT_SHIPPING_ORDERS.EXTRA_40_CONTAINERS) FROM EXPORT_SHIPPING_ORDERS WHERE
EXPORT_SHIPPING_ORDERS.SHPMNT_REF = ES.SHPMNT_REF) AS "40'"
FROM BRDB.EXPORT_SHIPMENT ES
表就像:
File No 20' 40'
000123 3 4
000124 1 2
我想要的是:
File No 20' 40' Total
000123 3 4 7
000124 1 2 3
“总计”不在数据库列中,它是虚拟列。
答案 0 :(得分:0)
with data as
(SELECT
ES.SHPMNT_REF AS "File No",
(SELECT MAX(EXPORT_SHIPPING_ORDERS.EXTRA_20_CONTAINERS) FROM EXPORT_SHIPPING_ORDERS WHERE
EXPORT_SHIPPING_ORDERS.SHPMNT_REF = ES.SHPMNT_REF) AS "20'",
(SELECT MAX(EXPORT_SHIPPING_ORDERS.EXTRA_40_CONTAINERS) FROM EXPORT_SHIPPING_ORDERS WHERE
EXPORT_SHIPPING_ORDERS.SHPMNT_REF = ES.SHPMNT_REF) AS "40'"
FROM BRDB.EXPORT_SHIPMENT ES)
select "File No", "20'", "40'", "20'" + "40'" as "Total"
from data;
编辑:如果您的后端不支持“ with CTE”:
select "File No", "20'", "40'", "20'" + "40'" as "Total"
from (SELECT
ES.SHPMNT_REF AS "File No",
(SELECT MAX(EXPORT_SHIPPING_ORDERS.EXTRA_20_CONTAINERS) FROM EXPORT_SHIPPING_ORDERS WHERE
EXPORT_SHIPPING_ORDERS.SHPMNT_REF = ES.SHPMNT_REF) AS "20'",
(SELECT MAX(EXPORT_SHIPPING_ORDERS.EXTRA_40_CONTAINERS) FROM EXPORT_SHIPPING_ORDERS WHERE
EXPORT_SHIPPING_ORDERS.SHPMNT_REF = ES.SHPMNT_REF) AS "40'"
FROM BRDB.EXPORT_SHIPMENT ES) data;
答案 1 :(得分:0)
使用CTE
with cte as
(SELECT
ES.SHPMNT_REF AS "File No",
(SELECT MAX(EXPORT_SHIPPING_ORDERS.EXTRA_20_CONTAINERS) FROM EXPORT_SHIPPING_ORDERS WHERE
EXPORT_SHIPPING_ORDERS.SHPMNT_REF = ES.SHPMNT_REF) AS "20'",
(SELECT MAX(EXPORT_SHIPPING_ORDERS.EXTRA_40_CONTAINERS) FROM EXPORT_SHIPPING_ORDERS WHERE
EXPORT_SHIPPING_ORDERS.SHPMNT_REF = ES.SHPMNT_REF) AS "40'"
FROM BRDB.EXPORT_SHIPMENT ES )
Select *, [20'] + [40'] as "Total" from cte
答案 2 :(得分:0)
只需使用+
。
SELECT
ES.SHPMNT_REF AS "File No",
(SELECT MAX(EXPORT_SHIPPING_ORDERS.EXTRA_20_CONTAINERS) FROM EXPORT_SHIPPING_ORDERS WHERE
EXPORT_SHIPPING_ORDERS.SHPMNT_REF = ES.SHPMNT_REF) AS "20'",
(SELECT MAX(EXPORT_SHIPPING_ORDERS.EXTRA_40_CONTAINERS) FROM EXPORT_SHIPPING_ORDERS WHERE
EXPORT_SHIPPING_ORDERS.SHPMNT_REF = ES.SHPMNT_REF) AS "40'",
(SELECT MAX(EXPORT_SHIPPING_ORDERS.EXTRA_20_CONTAINERS) FROM EXPORT_SHIPPING_ORDERS WHERE
EXPORT_SHIPPING_ORDERS.SHPMNT_REF = ES.SHPMNT_REF)
+
(SELECT MAX(EXPORT_SHIPPING_ORDERS.EXTRA_40_CONTAINERS) FROM EXPORT_SHIPPING_ORDERS WHERE
EXPORT_SHIPPING_ORDERS.SHPMNT_REF = ES.SHPMNT_REF) AS "Total"
FROM BRDB.EXPORT_SHIPMENT ES;
答案 3 :(得分:0)
使用+
添加两个值。为了方便起见,将聚合查询移至FROM
子句(如果您更喜欢,则移至WITH
子句)。
select
es.shpmnt_ref,
coalesce(eso.extra20, 0) as ex20,
coalesce(eso.extra40, 0) as ex40,
coalesce(eso.extra20, 0) + coalesce(eso.extra40, 0) as total
from brdb.export_shipment es
left join
(
select
shpmnt_ref,
max(extra_20_containers) as extra20,
max(extra_40_containers) as extra40
from export_shipping_orders
group by shpmnt_ref
) eso on eso.shpmnt_ref = es.shpmnt_ref;
答案 4 :(得分:0)
您只需使用'+'运算符即可
SELECT
ES.SHPMNT_REF AS "File No",
(SELECT MAX(EXPORT_SHIPPING_ORDERS.EXTRA_20_CONTAINERS) FROM EXPORT_SHIPPING_ORDERS
WHERE EXPORT_SHIPPING_ORDERS.SHPMNT_REF = ES.SHPMNT_REF) AS "20'",
(SELECT MAX(EXPORT_SHIPPING_ORDERS.EXTRA_40_CONTAINERS) FROM EXPORT_SHIPPING_ORDERS
WHERE EXPORT_SHIPPING_ORDERS.SHPMNT_REF = ES.SHPMNT_REF) AS "40'"
((SELECT MAX(EXPORT_SHIPPING_ORDERS.EXTRA_20_CONTAINERS) FROM EXPORT_SHIPPING_ORDERS
WHERE EXPORT_SHIPPING_ORDERS.SHPMNT_REF = ES.SHPMNT_REF)
+
(SELECT MAX(EXPORT_SHIPPING_ORDERS.EXTRA_40_CONTAINERS) FROM EXPORT_SHIPPING_ORDERS
WHERE EXPORT_SHIPPING_ORDERS.SHPMNT_REF = ES.SHPMNT_REF)) AS "Total"
FROM BRDB.EXPORT_SHIPMENT ES