条件 SUM 不允许操作数
Conditional SUM not allowing operands
我正在尝试将 SUM
的 Order
amount
转换为固定货币。 Order
table 中的 amount
可以是不同的货币。
如果 Currency
table 中的 IsBase
标志是 1
,那么我想用 Rate
除,否则我想乘以Rate
.
SELECT CASE WHEN c.isBase = 1
THEN SUM(o.Amount / c.Rate)
ELSE SUM(o.Amount * c.Rate)
END
FROM Orders o JOIN Currency c
ON o.Currency = c.Currency
这不起作用并给出错误:
Column c.isBase' is invalid in the select list because it is not
contained in either an aggregate function or the GROUP BY clause.
但该列不是 SELECT
的一部分。它是 SELECT
中条件的一部分。如果我想要这样的 SUM
,我怎样才能让它工作?
SELECT SUM(CASE WHEN c.isBase = 1
THEN o.Amount / c.Rate
ELSE o.Amount * c.Rate
END) AS answer
FROM Orders o JOIN Currency c
ON o.Currency = c.Currency
您应该将 CASE
表达式放在 SUM
聚合函数中:
SELECT
SUM(CASE WHEN c.isBase = 1 THEN o.Amount / c.Rate ELSE o.Amount * c.Rate END)
FROM Orders o
JOIN Currency c
ON o.Currency = c.Currency
请尝试以下
SELECT CASE WHEN c.isBase = 1
THEN SUM(o.Amount / c.Rate)
ELSE SUM(o.Amount * c.Rate)
END
FROM Orders o JOIN Currency c
ON o.Currency = c.Currency
GROUP BY c.isBase
我正在尝试将 SUM
的 Order
amount
转换为固定货币。 Order
table 中的 amount
可以是不同的货币。
如果 Currency
table 中的 IsBase
标志是 1
,那么我想用 Rate
除,否则我想乘以Rate
.
SELECT CASE WHEN c.isBase = 1
THEN SUM(o.Amount / c.Rate)
ELSE SUM(o.Amount * c.Rate)
END
FROM Orders o JOIN Currency c
ON o.Currency = c.Currency
这不起作用并给出错误:
Column c.isBase' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
但该列不是 SELECT
的一部分。它是 SELECT
中条件的一部分。如果我想要这样的 SUM
,我怎样才能让它工作?
SELECT SUM(CASE WHEN c.isBase = 1
THEN o.Amount / c.Rate
ELSE o.Amount * c.Rate
END) AS answer
FROM Orders o JOIN Currency c
ON o.Currency = c.Currency
您应该将 CASE
表达式放在 SUM
聚合函数中:
SELECT
SUM(CASE WHEN c.isBase = 1 THEN o.Amount / c.Rate ELSE o.Amount * c.Rate END)
FROM Orders o
JOIN Currency c
ON o.Currency = c.Currency
请尝试以下
SELECT CASE WHEN c.isBase = 1
THEN SUM(o.Amount / c.Rate)
ELSE SUM(o.Amount * c.Rate)
END
FROM Orders o JOIN Currency c
ON o.Currency = c.Currency
GROUP BY c.isBase