У меня есть приложение, созданное с использованием Delphi XE3, которое обращается к базе данных SQLite с помощью компонента Zeos.
Команда select в SQLite, которая возвращает 3 строки:
select p.descricao, pg.valor
from pagamento pg
inner join venda v on pg.origem = 'venda' and v.id_venda = pg.id_origem
left join pagamento_tipo p on pg.id_pagamento_tipo = p.id_pagamento_tipo
where v.data >= '2021-01-19' and v.data <= '2021-01-19'
and v.ra_status_venda in ( 'Finalizado', 'Pedido')
но когда я ставлю групповую команду, результат информации неверен.
select p.descricao, sum(pg.valor) as valor
from pagamento pg
inner join venda v on pg.origem = 'venda' and v.id_venda = pg.id_origem
left join pagamento_tipo p on pg.id_pagamento_tipo = p.id_pagamento_tipo
where v.data >= '2021-01-19' and v.data <= '2021-01-19'
and v.ra_status_venda in ( 'Finalizado', 'Pedido')
group by descricao
P02 не сумма.
и, если я суммирую всю строку без группировки, значение тоже будет правильным.
select sum(pg.valor) as valor
from pagamento pg
inner join venda v on pg.origem = 'venda' and v.id_venda = pg.id_origem
left join pagamento_tipo p on pg.id_pagamento_tipo = p.id_pagamento_tipo
where v.data >= '2021-01-19' and v.data <= '2021-01-19'
and v.ra_status_venda in ( 'Finalizado', 'Pedido')
PS: в другом периоде эти команды суммируются правильно. PS2 Я использую 32-битную dll для Windows.
,
в качестве десятичного разделителя для числовых значений. Вы должны использовать.
. В любом случае в результате вы должны получить не0
, а39
. Можете воспроизвести проблему на скрипке: dbfiddle.uk/?rdbms=sqlite_3.27 - person forpas   schedule 20.01.2021typeof(pg.valor)
к столбцам результатов с вашим первым запросом? - person Shawn   schedule 20.01.2021