将 "SUMs" 与相似值合并
Combining "SUMs" with a similar value
我有一个提要更新我的数据库,其中包含全天 purchased/returned 的订单。 table 具有名称、值和订单类型。下面的table是当前DB的视图(订单类型不在此图上,但存储在DB中即purchase/return)
我的目标是查询此数据库并return得到以下结果:
购买列将对姓名的所有购买进行求和,return 列将对姓名的所有 return 求和,净列将对所有值进行求和姓名。
这是我提出的以下查询:
SELECT
(SELECT NAME, SUM(ORDER)
FROM Orders
WHERE OrderType = "Purchase"
) AS PURCHASE,
(SELECT NAME, SUM(ORDER)
FROM Orders
WHERE OrderType = "Return"
) AS RETURN,
(SELECT NAME, SUM(ORDER)
FROM Orders
) AS NET
结果如下:
计算是正确的,但我不知道如何组合名称并在它们自己的列中显示计算。非常感谢任何帮助,谢谢!!
您可以使用 CASE WHEN
:
SELECT NAME,
SUM(CASE WHEN OrderType = 'Purchase' THEN `ORDER` ELSE 0 END) AS PURCHASE,
SUM(CASE WHEN OrderType = 'Return' THEN `ORDER` ELSE 0 END) AS `RETURN`,
SUM(`Order`) AS Net
FROM Orders
GROUP BY NAME
我有一个提要更新我的数据库,其中包含全天 purchased/returned 的订单。 table 具有名称、值和订单类型。下面的table是当前DB的视图(订单类型不在此图上,但存储在DB中即purchase/return)
我的目标是查询此数据库并return得到以下结果:
购买列将对姓名的所有购买进行求和,return 列将对姓名的所有 return 求和,净列将对所有值进行求和姓名。
这是我提出的以下查询:
SELECT
(SELECT NAME, SUM(ORDER)
FROM Orders
WHERE OrderType = "Purchase"
) AS PURCHASE,
(SELECT NAME, SUM(ORDER)
FROM Orders
WHERE OrderType = "Return"
) AS RETURN,
(SELECT NAME, SUM(ORDER)
FROM Orders
) AS NET
结果如下:
计算是正确的,但我不知道如何组合名称并在它们自己的列中显示计算。非常感谢任何帮助,谢谢!!
您可以使用 CASE WHEN
:
SELECT NAME,
SUM(CASE WHEN OrderType = 'Purchase' THEN `ORDER` ELSE 0 END) AS PURCHASE,
SUM(CASE WHEN OrderType = 'Return' THEN `ORDER` ELSE 0 END) AS `RETURN`,
SUM(`Order`) AS Net
FROM Orders
GROUP BY NAME