Вчера я опубликовал аналогичный вопрос с тем же кодом, я переписал его и должен быть идеальным для новой спецификации, но по какой-то причине он не работает.Сложный подсчет в SQL-запросе
Я использую Oracle 10g Express.
В приведенном ниже коде представлены 10% ведущих юрисконсультов.
CREATE VIEW rich_solicitors AS
select notes.time_spent*rate.rate_amnt+coalesce(special_rate.s_rate_amnt,0)
AS solicitor_made, notes.solicitor_id
FROM notes, rate, solicitor_rate, solicitor, case, contract, special_rate
WHERE notes.solicitor_id = solicitor.solicitor_id
AND solicitor.solicitor_id = solicitor_rate.solicitor_id
AND solicitor_rate.rate_id = rate.rate_id
AND notes.case_id = case.case_id
AND case.contract_id = contract.contract_id
AND contract.contract_id = special_rate.contract_id (+)
ORDER BY -solicitor_made;
SELECT * FROM rich_solicitors
WHERE ROWNUM <= (SELECT COUNT(*)/10 FROM rich_solicitors);
мне нужно работать в 10% в прошлом году, я думал, что будет так же легко, как добавление START_DATE и EXPIRY_DATE к SELECT, и добавив следующую команду, где функции:
AND contract.start_date >= 01-01-10
AND contract.expiry_date <= 01-01-11
Я вставляю дату, используя TO_DATE. Мой преподаватель провел хороший час со мной, выясняя, почему это не сработает, но безрезультатно.
Он продолжал возвращенная ошибку - ORA-00932: несовместимые типы данных: ожидается CHAR получил НОМЕР
Я также попытался определения формата даты и до сих пор возвращается ту же ошибку
CREATE VIEW rich_solicitors1 AS
SELECT notes.time_spent*rate.rate_amnt+coalesce(special_rate.s_rate_amnt,0) AS solicitor_made, notes.solicitor_id, TO_CHAR(contract.start_date, 'DD-MM-YY'), TO_CHAR(contract.expiry_date, 'DD-MM-YY')
FROM notes, rate, solicitor_rate, solicitor, case, contract, special_rate
WHERE notes.solicitor_id = solicitor.solicitor_id
AND solicitor.solicitor_id = solicitor_rate.solicitor_id
AND solicitor_rate.rate_id = rate.rate_id
AND notes.case_id = case.case_id
AND case.contract_id = contract.contract_id
AND contract.contract_id = special_rate.contract_id (+)
AND contract.start_date >= 01-01-10
AND contract.expiry_date <= 01-01-11
ORDER BY -solicitor_made;
какие-либо идеи?
Огромное спасибо, любая критика очень ценится, я студент и на первых своих шагах с этим, до 9 дней назад, у меня не было никаких знаний SQL.
Я, похоже, не могу правильно отформатировать свой код здесь, это ошибка браузера? любой совет? – Phil
@Phil: взгляните на http://stackoverflow.com/editing-help. – BoltClock
@NullUserException: Эй, ты вернулся! Это было давно :) – BoltClock