我有一个订单表(简化)
OrderId,
SalesPersonId,
SaleAmount,
CurrencyId,
...
Run Code Online (Sandbox Code Playgroud)
我试图在这张桌子上创建一个报告,我希望有类似的东西:
SalesPersonId TotalCAD TotalUSD
1 12,345.00 6,789.00
2 7,890.00 1,234.00
Run Code Online (Sandbox Code Playgroud)
我宁愿不做自我加入(也许我过早地进行优化,但这似乎效率低下)IE:
SELECT SalesPersonId, SUM(OrdersCAD.SaleAmount), SUM(OrderUSD.SaleAmount)
FROM Orders
LEFT JOIN Orders AS OrdersCAD ON Orders.OrderID AND Orders.CurrencyID = 1
LEFT JOIN Orders AS OrdersUSD ON Orders.OrderID AND Orders.CurrencyID = 2
Run Code Online (Sandbox Code Playgroud)
但是我想不出另一种方法可以做到这一点,任何想法?
使用CASE块:
SELECT
SalesPersonId,
SUM(
CASE CurrencyID
WHEN 1 THEN SaleAmount
ELSE 0
END
) AS TotalCAD,
SUM(
CASE CurrencyID
WHEN 2 THEN SaleAmount
ELSE 0
END
) AS TotalUSD
FROM Orders
GROUP BY SalesPersonId
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6579 次 |
| 最近记录: |