У меня есть таблица, содержащая данные транзакции. Строки с тем же "group_id" являются частью одной и той же транзакции. Я выполняю следующий SQL-запрос, чтобы показать все транзакции: SELECT * FROM транзакций
Когда я запускаю этот запрос, я получаю как ожидалось список всех транзакций. Но этот большой список затрудняет разделение данных с другой group_id
из других данных.
По этой причине я хочу добавить пустую строку в конец group_id, поэтому я получаю: 1 1 (empty row) 2 2 2
вместо: 1 1 2 2 2
Может кто-то помочь мне с этим?
Вот моя база данных: http://sqlfiddle.com/#!9/b9bf79/1
вы можете использовать (злоупотреблять) накопительный пакет.
SELECT *
FROM transactions
group by group_id, id
with rollup
having group_id is not null
это вставляет строку с id
установленным в null после каждого group_id.
mysql также сортирует group_id из-за group by
.
Группа по id 'гарантирует, что все строки будут показаны (ваша схема не отображает ее, но я предполагаю, что идентификатор уникален? В противном случае вам нужно добавить другие поля)
Однако только один id
будет лишним в дополнительных строках. Остальные столбцы повторяют значение выше.
Вы можете их фильтровать следующим образом:
SELECT
id,
case id is not null when true then date else null end as date,
case id is not null when true then group_id else null end as group_id
-- ....
FROM transactions
group by group_id, id
with rollup
having group_id is not null
В качестве альтернативы:
select * from
(SELECT *
FROM transactions
union all
select distinct null, null, group_id, null, null,null from transactions
) as t
order by 3,1
но сначала нулевые значения сортируются, поэтому "зазор" находится перед каждой секцией
Я не предлагаю вам делать это вообще, но если вы просто хотите разделить две группы, вы можете это сделать:
SELECT * FROM transactions WHERE group_id = 1
UNION ALL
(SELECT '','','','','','')
UNION ALL
SELECT * FROM transactions WHERE group_id = 2
Очевидно, это может быть добавлено, если в будущем будет больше идентификаторов групп, но это не решение общего назначения, в котором вы действительно лучше разбираетесь в таких проблемах, как в коде приложения.
group_id
просто добавьте предложениеWHERE
.