这将很难解释,但在这里。
我希望在一个SELECT
子句中执行 CASE 条件,该条件将使用两个计算的结果来确定为列值返回哪个计算值。
也许代码示例会有所帮助:
这有效:
SELECT
A.[COLUMN1]
, B.[COLUMN1]
, CASE
WHEN A.[COLUMN2] + A.[COLUMN3] >= B.[COLUMN2] + B.[COLUMN3] THEN A.[COLUMN2] + A.[COLUMN3]
ELSE B.[COLUMN2] + B.[COLUMN3]
FROM
[TABLE_A] A
INNER JOIN [TABLE_B] B INNER JOIN ON A.ID = B.ID
这里的问题是上面的查询,在case语句中,被强制执行了两次计算。一次用于WHEN
子句,再次用于THEN
子句。
我想做这样的事情,但 SQL 对此并不满意。
SELECT
A.[COLUMN1]
, B.[COLUMN1]
, CASE
WHEN AB.X >= AB.Y THEN AB.X
ELSE AB.Y
END
FROM ((A.[COLUMN2] + A.[COLUMN3]) X, (B.[COLUMN2] + B.[COLUMN3]) Y)
FROM
[TABLE_A] A
INNER JOIN [TABLE_B] B INNER JOIN ON A.ID = B.ID
这甚至可能吗?在第二个示例中,我只计算一次值并在 case 语句中引用它们,包括 theWHEN
和THEN
子句。