Уберите T.TRANZTIME из группировки и из селекта. Там два разных значения.
Если вам обязательно надо какое-то показать (например последнее), то выкиньте его из группировки, а в селекте поставьте там агрегатор, например, max.
Вот так ваш Сидоров просуммируется на этом датасете в одну строку:
SELECT
C.CODE AS "Табельный",
C.NAME AS "Ф.И.О.",
T.TRANZDATE AS "Дата",
max(T.TRANZTIME) AS "Время",
T.INFOSTR AS "Карта",
sum(T.SUMM) AS "Сумма"
FROM
DOCUMENT D
LEFT JOIN TRANZT T ON D.ID = T.DOCUMENTID
JOIN CLIENT C ON D.CLIENTID = C.ID
WHERE
T.TRANZDATE >='20.02.2020' AND T.TRANZDATE <='20.02.2020' AND
T.TRANZTIME >='18:55:00' AND T.TRANZTIME <='23:59:59' AND
D.STATE = 1 AND
D.ISFISCAL = 1 AND
D.CLIENTID >=0 AND
T.TRANZTYPE = '36'
GROUP BY
C.CODE,
C.NAME,
T.TRANZDATE,
-- T.TRANZTIME,
T.INFOSTR
-- ,T.SUMM
Но на этом ваши проблемы не кончатся. В вашем SQL много других косяков:
- Какой смысл делать такое условие: T.TRANZTIME <='23:59:59'? Любое время будет ему удовлетворять.
- Если ваши дата и время связаны, то есть определяют какой-то момент во времени, то их нужно хранить и фильтровать как единое значение, иначе вы сами не заметите как наткнётесь на не очевидную (для новичка) ошибку неконсистентности. К примеру, событие Б позднее события А, но А произошло вечером, а Б утром (другого дня). При вашем отдельном сравнении дат и времён может получиться некорректность из-за того, что время (без даты) события А > времени (без даты) события Б. Соедините дату и время в единое поле datetime или соединяйте их каждый раз когда делаете условную фильтрацию по временнОму диапазону.
- Зачем вы группируете по T.SUMM, если собирались агрегировать это поле?