В моей базе данных, для магазинов, которые не имеют рейтинга по рейтингу посредников, у них все еще есть запись, но вместо числа от 0.0
до 10.0
есть -1.0
. Следующий запрос приводит к отображению -10.00
в моем представлении для тех магазинов с -1.0
. Вместо этого мне бы хотелось, чтобы на его месте появлялось либо ничего, либо -
, но мне не очень удобно внедрять встроенные операторы if в моем представлении. Вот мой текущий взгляд.
CREATE VIEW myview AS
SELECT co_url_name AS company_url, score_combined AS stella_score, trunc(score*10, 2) AS bizrate_score,
(SELECT trunc("lifetimeRating"*10, 2)) AS resellerRating_score
FROM ss_profile_co AS s LEFT OUTER JOIN "resellerRatings_ratings" AS r
ON s.id = r.company_id
LEFT OUTER JOIN (SELECT * FROM bizrate_bizrate_ratings WHERE score_name = 'Overall rating') AS b
ON s.id = b.fk_co_id
ORDER BY co_url_name ASC;
Строка (SELECT trunc("lifetimeRating"*10, 2)) AS resellerRating_score
- это строка, которая возвращает отрицательные числа (или, для действительных записей, будет возвращать счет от 0.00
до 100.00
).
Очевидно, я мог бы просто удалить эти записи из базы данных, что привело бы к этому, но это все равно наполовину опыт обучения и половина моих возможностей.
Я ценю помощь!
РЕДАКТИРОВАТЬ: Попытка встроенного, если, но не удивительно, получил ошибку.
IF (SELECT trunc("lifetimeRating"*10, 2)) = -10.00 THEN NULL ELSE (SELECT trunc("lifetimeRating"*10, 2)) AS resellerRating_score
EDIT2: разобрался. Рассматриваемая строка выглядит следующим образом:
(SELECT trunc("lifetimeRating"*10, 2) WHERE trunc("lifetimeRating"*10, 2) > 0) AS resellerrating_score
/ ForeverAlone