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

1 つの複合ステートメントでこれを行う簡単な方法はありますか?

ありがとう!

4

3 に答える 3

1

1 つのクエリで 3 つの手順を実行できます。最初LEFT OUTER JOINに を使用IFNULLしてNULL値をデフォルト値に設定し、次に を使用します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 に答える