かぶった

上のテーブルと考え方が同じ方法がここですでに出てたよ...orz
でも同じテーブル構成から全然違うSELECTが出てくる、ってのが面白いよね。


で、記事のコメントに、

あー。
accountの符号から income と outgo ってカラムがあるかのように”見せかける”のかー
もともとincome/outgoがあって、この制約が”後だしジャンケン”的にくっついたらどぉなるでしょか(いぢわる)。

income(収入)とoutgo(支出)の一方はNULL/他方はNULLでない!って条件の実現

なんてお題が。
で、それへの返信がこのエントリ
エントリ中に、

ただ、本当にやるとしたら、許されるとしたらテーブル定義変えてしまいます。

とあるように、テーブル定義変えちゃうのが一番ですね。
たまたま上で書いたテーブル名がもともとのテーブル名とかぶってないので、丸ごとデータを移してしまって、後はcashboxにおさらばしてもらうなら、

INSERT INTO Cashes SELECT date, summary, income - outgo, note FROM cashbox;
DROP TABLE cashbox;

で。


追記:
incomeかoutgoにはNULLが入ってるんだから、引き算しちゃダメじゃん。

INSERT INTO Cashes
  SELECT
      date
    , summary
    , coalesce(income, 0) - coalesce(outgo, 0)
    , note
  FROM cashbox;

ただしくはこうだな。