Group by unknown ID, select all related rows where Column X = Y and Column X = Z
Maybe you need

SELECT session_id,
       MAX(CASE WHEN question = 'Q1' then responce END) q1,
       MAX(CASE WHEN question = 'Q1' then DateCreated END) q1_datetime,
       MAX(CASE WHEN question = 'Q2' then responce END) q2,
       MAX(CASE WHEN question = 'Q2' then DateCreated END) q2_datetime,
       MAX(CASE WHEN question = 'Q3' then responce END) q3,
       MAX(CASE WHEN question = 'Q3' then DateCreated END) q3_datetime,
       terminal
FROM quiz
WHERE terminal IN ('A1','A2','B1')
GROUP BY session_id, terminal
-- HAVING MAX(CASE WHEN Question = 'Q1' then Response END) = 'A' 
--    AND MAX(CASE WHEN Question = 'Q2' then Response END) = 'B';