Вместо этого можно выполнить условное агрегирование:
select mem_id,
max(iif(month_code = 'Jan', type)) as Jan,
max(iif(month_code = 'Feb', type)) as Feb,
max(iif(month_code = 'Mar', type)) as Mar
from test t
group by mem_id;
Для вашего запроса имя Member
не существует в таблице test
, поэтому access
считает его parameter
.
Итак, вам, вероятно, нужно mem_id
вместо:
SELECT t.mem_id as Member,
(SELECT t1.type FROM test as t1 where t1.mem_id = t.mem_id and t1.month_code='Jan') as Jan,
(SELECT t1.type FROM test as t1 where t1.mem_id = t.mem_id and t1.month_code='Feb') as Feb,
(SELECT t1.type FROM test as t1 where t1.mem_id = t.mem_id and t1.month_code='Mar') as Mar
FROM test as t
GROUP BY t.mem_id;
Единственная проблема в том, что с вашей версией, если у одного mem_id
есть дубликаты type
s для того же month_code
, тогда будет выдано subquery
error.
Итак, вам нужно top
предложение в subquery
.