1

我有一个包含列 (a, b) 的表 A 和一个包含列 (b, c) 的表 B。我想做以下事情:

STEP 1: do a   A LEFT OUTER JOIN B ON A.b = B.b
STEP 2: convert all c = NULL in the Joined table to c = <default_value>
STEP 3: SUM(A.a * B.c) over the table I get after STEP 2

有没有一种快速的方法可以在一个复合语句中做到这一点?

谢谢!

4

3 回答 3

1

您可以在一个查询中执行三个步骤,首先LEFT OUTER JOIN并使用IFNULLNULL值设置为默认值,然后使用SUM

SELECT
  SUM(A.a + IFNULL(B.c, <default_value>))
FROM A 
LEFT OUTER JOIN B ON A.b = B.b;

SQL 小提琴演示:

于 2013-02-07T08:06:20.330 回答
0
select
  sum(A.a + IFNULL(B.c, some_default)) as some_sum
FROM
  A
  LEFT JOIN B
    ON
      B.b = A.b
于 2013-02-07T08:06:48.700 回答
0
 select sum(A.a * (case when B.c = null then <default> else B.c end)) as joined_sum
 from A left outer join B on (A.b = B.b);
于 2013-02-07T08:07:46.240 回答