With
--1. group
aTable as(
SELECT
"SourceOrderNumber","OperateType",sum("ServiceCatagoryQuota") as "ServiceCatagoryQuota", array_agg("UsedOrderItemNumber") as "UsedOrderItemNumber"
FROM orders."a"
group by "SourceOrderNumber","OperateType"
),
--2. group后 按类型 一行展示
aSplitTable as (
select "SourceOrderNumber",
sum(CASE "OperateType" WHEN 0 THEN "ServiceCatagoryQuota" ELSE 0 END ) "RechargeQuota",
sum(CASE "OperateType" WHEN 1 THEN "ServiceCatagoryQuota" ELSE 0 END ) "ConsumeQuota",
sum(CASE "OperateType" WHEN 3 THEN "ServiceCatagoryQuota" ELSE 0 END ) "RechargeReturnQuota",
sum(CASE "OperateType" WHEN 2 THEN "ServiceCatagoryQuota" ELSE 0 END ) "CancelConsumeQuota",
sum("ServiceCatagoryQuota") as "LeftQuota"
from aTable
group by "SourceOrderNumber"
)
SELECT * from aSplitTable;
case的其他用法
SELECT
po."OrderNumber" as "订单编号",
po."Currency" as "币种id",
CASE WHEN sc."Currency" =1 THEN 'CNY'
WHEN sc."Currency" =2 THEN 'USD'
WHEN sc."Currency" =3 THEN 'EUR'
WHEN sc."Currency" =4 THEN 'HKD'
WHEN sc."Currency" =5 THEN 'GBP'
WHEN sc."Currency" =6 THEN 'AUD'
WHEN sc."Currency" =7 THEN 'CAD'
WHEN sc."Currency" =8 THEN 'JPY'
WHEN sc."Currency" =9 THEN 'KRW'
WHEN sc."Currency" =10 THEN 'NZD'
WHEN sc."Currency" =11 THEN 'RUB'
WHEN sc."Currency" =12 THEN 'SGD'
ELSE '其他' end
AS "币种名称"
from po
limit 10;