前の行の値のスコアを加算して3番目の列を追加したい、または2番目の列を修正したいと思います。私は日付別に2つのテーブルを追加していますが、データを連続して追加することはできません。mysqlを使用したローリングアップ
のDDL:
CREATE TABLE 1_bugs
(id int(11) NOT NULL
, date date NOT NULL
, cf1 int(11) NOT NULL
, cf2 int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO 1_bugs (id, date, cf1, cf2) VALUES
(1, '2016-07-19', 3, 2),
(2, '2016-07-19', 2, 1),
(3, '2016-07-22', 2, 2);
問合せ:
SELECT table.date1, IFNULL(table.cf1 + bugs.cf2),0) as score FROM table GROUP BY table.date1;
出力:期待
| date1 | score |
| 2016-07-19 | 5 |
| 2016-07-19 | 3 |
| 2016-07-22 | 4 |
:
| date1 | score | Total score |
| 2016-07-19 | 5 | 5 |
| 2016-07-19 | 3 | 8 |
| 2016-07-22 | 4 | 12 |
私はロールアップを試しましたが、期待どおりの出力が得られず、すべてのスコア値を加算したヌル行が追加されます。
| date1 | score |
| 2016-07-19 | 5 |
| 2016-07-19 | 3 |
| 2016-07-22 | 4 |
| null | 12 |
誰かが期待どおりの出力を得るのを助けてくれますか?
あなたが好きな場合は、アクションのこの単純な二段階のコース、次の考慮:あなたはまだ行っていない場合は1を、適切なCREATEおよびステートメント(および/またはsqlfiddle)を挿入提供することは私たちがより簡単にできるように、問題を再現する。 2.まだ実行していない場合は、手順1で提供された情報に対応する望ましい結果セットを提供してください。 – Strawberry
CREATE TABLE '1_bugs'( ' id' int(11)NOT NULL、 'date' dateはNULLではありません(11)NOT NULL )ENGINE = InnoDB DEFAULT CHARSET = latin1; INSERT INTO '1_bugs'(' id'、 'date'、' cf1'、 'cf2')VALUES (1、 '2016-07-19'、3,2)、 (2、 '2016-07 -19 '、2、1)、 (3、' 2016-07-22 '、2、2); –
あなたはあまりにも読み直すことができますか?作成、挿入、予期されていない、実際には問題は既に言及されていませんか?もしあなたが知っていれば、あなたはそれに答えることができますか? –