我正在使用mysql并尝试输出一个事务列表和小计,如下所示:
| 2015-09 | Mortgage | 182.00 | 171 | | 2015-10 | Mortgage | 11775.00 | 171 | | 2015-11 | Mortgage | 7670.00 | 171 | | 2015-12 | Mortgage | 182.00 | 171 | | NULL | NULL | 19809.00 | 171 | | 2016-01 | Mortgage | 11713.00 | 171 | | 2016-02 | Mortgage | 8450.00 | 171 | .... | 2016-09 | Mortgage | 9517.00 | 171 | | 2016-10 | Mortgage | 182.00 | 171 | | NULL | NULL | 61998.00 | 171 | | NULL | NULL | 81807.00 | 171 |
但我得到了这个:
| 2015-09 | Mortgage | 182.00 | 171 | | 2015-10 | Mortgage | 11775.00 | 171 | | 2015-11 | Mortgage | 7670.00 | 171 | | 2015-12 | Mortgage | 182.00 | 171 | | 2015-12 | Mortgage | 19809.00 | 171 | | 2016-01 | Mortgage | 11713.00 | 171 | | 2016-02 | Mortgage | 8450.00 | 171 | .... | 2016-09 | Mortgage | 9517.00 | 171 | | 2016-10 | Mortgage | 182.00 | 171 | | 2016-10 | Mortgage | 61998.00 | 171 | | 2016-10 | Mortgage | 81807.00 | 171 |
即最后一个字段在小计和总行上重复。
我的SQL行是:
SELECT DATE_FORMAT(a.datum, '%Y-%m'), c.namn, SUM(a.amount), a.kategori
FROM alla AS a LEFT OUTER JOIN kategorier AS c ON a.kategori = c.id
WHERE a.kategori = 171 GROUP BY YEAR(a.datum), MONTH(a.datum) WITH ROLLUP;
如何更改它以在小计和总行的第一列和第二列上获取NULL值?
编辑:添加创建表语句:
CREATE TABLE `alla` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`datum` date NOT NULL,
`namn` varchar(128) COLLATE utf8_swedish_ci NOT NULL,
`amount` decimal(10,2) NOT NULL,
`kategori` int(11) NOT NULL,
PRIMARY KEY (`id`);
CREATE TABLE `kategorier` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`namn` varchar(64) COLLATE utf8_swedish_ci NOT NULL,
PRIMARY KEY (`id`);
一些示例数据:
Table alla: | id | datum | namn | amount | kategori | | 2 | 2016-10-22 | Coop Konsum | 529.00 | 2 | | 3 | 2016-10-23 | Swedbank | 148.00 | 171 | | 4 | 2016-10-25 | Coop Konsum | 1022.00 | 2 | | 4321 | 2016-07-28 | 0000028547601 | 11455.00 | 171 | | 4353 | 2016-07-04 | SWEDB FÖRSÄK | 75.00 | 171 | | 4354 | 2016-07-04 | SWEDB FÖRSÄK | 73.00 | 171 | | 4383 | 2016-06-01 | SWEDB FÖRSÄK | 75.00 | 171 | | 4384 | 2016-06-01 | SWEDB FÖRSÄK | 73.00 | 171 | | 4387 | 2016-05-28 | 0028570670 | 2756.00 | 171 | | 4388 | 2016-05-28 | 5330647 | 2756.00 | 171 | | 4389 | 2016-05-28 | 85337021 | 2756.00 | 171 | | 4411 | 2016-05-02 | SWEDB FÖRSÄK | 91.00 | 171 | | 4412 | 2016-05-02 | SWEDB FÖRSÄK | 73.00 | 171 | | 4415 | 2016-04-28 | 28765001 | 11493.00 | 171 | | 4436 | 2016-04-01 | SWEDB FÖRSÄK | 91.00 | 171 | | 4437 | 2016-04-01 | SWEDB FÖRSÄK | 73.00 | 171 | | 4464 | 2016-03-01 | SWEDB FÖRSÄK | 91.00 | 171 | | 4465 | 2016-03-01 | SWEDB FÖRSÄK | 91.00 | 171 | | 4468 | 2016-02-28 | 670 | 2756.00 | 171 | | 4469 | 2016-02-28 | 7 | 2756.00 | 171 | | 4470 | 2016-02-28 | 370621 | 2756.00 | 171 | | 4493 | 2016-02-01 | SWEDB FÖRSÄK | 91.00 | 171 | | 4494 | 2016-02-01 | SWEDB FÖRSÄK | 91.00 | 171 | | 4496 | 2016-01-28 | 0285 | 11531.00 | 171 | | 4528 | 2016-01-04 | SWEDB FÖRSÄK | 91.00 | 171 | | 4529 | 2016-01-04 | SWEDB FÖRSÄK | 91.00 | 171 | | 4569 | 2015-12-01 | SWEDB FÖRSÄK | 91.00 | 171 | | 4570 | 2015-12-01 | SWEDB FÖRSÄK | 91.00 | 171 | | 4572 | 2015-11-28 | 028533 | 2496.00 | 171 | | 4573 | 2015-11-28 | 370647 | 2496.00 | 171 | | 4574 | 2015-11-28 | 00028 | 2496.00 | 171 | | 4599 | 2015-11-02 | SWEDB FÖRSÄK | 91.00 | 171 | | 4600 | 2015-11-02 | SWEDB FÖRSÄK | 91.00 | 171 | | 4604 | 2015-10-28 | 28547 | 11593.00 | 171 | Table kategorier: | id | namn | | 2 | Groceries | | 171 | Mortgage |