Чтобы перейти от текущего результата желаемого результата вы могли GROUP BY x.property
и получить max()
в CASE
с. Что-то похожее:
SELECT x.property prop,
max(CASE
WHEN x.rank = 1 THEN
x.customer
END) cust1,
max(CASE
WHEN x.rank = 2 THEN
x.customer
END) cust2,
max(CASE
WHEN x.rank = 3 THEN
x.customer
END) cust3
FROM tbl_custbyproperty c
LEFT JOIN (SELECT DISTINCT
cust_id,
customer,
property,
row_number() OVER (PARTITION BY c.property
ORDER BY c.customer) rank
FROM tbl_custbyproperty) x
ON c.cust_id = x.cust_id
GROUP BY x.property
ORDER BY x.property;
Но, вероятно, есть общее лучшее решение для вашей проблемы в целом, которое вы можете получить, если вы отредактируете свой вопрос и опубликуете CREATE
оператор таблицы вместе с INSERT
инструкциями для образцов данных, с которыми вы получили результат.