Не понял вашего вопроса вообще. Я исправлю ответ, если вы скажете что-нибудь еще. но насколько я понял ты хочешь что-то подобное?
Редактировать: Я сделал ту же таблицу, что вы дали нам в БД. И это работало нормально. Попробуйте и скажите мне, если это работает
SELECT COLUMNB,MAX(COLUMNA), MAX(ColumnC), MAX(COLUMND)
FROM DUMMY
WHERE ColumnC = 'T'
GROUP BY COLUMNB
HAVING SUM(CASE WHEN COLumnC = 'T' THEN 1 ELSE 0 END) <= 1
UNION ALL
SELECT *
FROM DUMMY
WHERE COLumnC = 'F'
Редактировать 2: Как насчет этого?
WITH B
AS(
SELECT A.COLUMNB, MAX(A.COLUMNA) AS COLUMNA, MAX(A.ColumnC) AS COLUMNC, MAX(A.COLUMND) AS COLUMND
FROM DUMMY A
GROUP BY A.COLUMNB
HAVING SUM(CASE WHEN A.COLumnC = 'T' THEN 1 ELSE 0 END) <= 1)
SELECT *
FROM B
UNION ALL
SELECT D.COLUMNB, D.ColumnA, D.ColumnC, D.ColumnD
FROM B, DUMMY D
WHERE B.ColumnB = D.COLUMNB
AND D.ColumnC = 'F'