может означать, что ваш внутренний подзапрос возвращает больше строки, поэтому вам нужно добавить предел 1, если вам нужно
select SUB_CATEGORY.SC_ID,SUB_CATEGORY.SC_NAME
from SUB_CATEGORY
WHERE SUB_CATEGORY .C_ID=CATEGORY.C_ID
LIMIT 1
так
select row_to_json(t)
from (
select json_agg(A) from (
select DISCIPLINE.D_ID,DISCIPLINE.D_NAME AS Discipline_Name, (
select json_agg(B) from (
select CATEGORY.C_ID,CATEGORY.C_NAME, (
select json_agg(C) from (
select SUB_CATEGORY.SC_ID,SUB_CATEGORY.SC_NAME
from SUB_CATEGORY
WHERE SUB_CATEGORY .C_ID=CATEGORY.C_ID
LIMIT 1
) C
) from CATEGORY WHERE CATEGORY.D_ID=DISCIPLINE.D_ID
) B
) from DISCIPLINE
) A
) t