Я только новичок в SQL, но я столкнулся с этой досадной ошибкой. SQL испытывает проблему с пунктом WHERE этого сценария:SQL не распознает псевдоним столбца в where, где статья
SELECT
ITEM_ID, ITEM_PRICE, DISCOUNT_AMOUNT, QUANTITY,
(ITEM_PRICE*QUANTITY) AS price_total,
(DISCOUNT_AMOUNT*QUANTITY) AS discount_total,
((ITEM_PRICE-DISCOUNT_AMOUNT)*QUANTITY) AS item_total
FROM ORDER_ITEMS
WHERE item_total > 500
ORDER BY item_total;
Я получаю эту ошибку:
Error starting at line : 1 in command -
SELECT
ITEM_ID, ITEM_PRICE, DISCOUNT_AMOUNT, QUANTITY,
(ITEM_PRICE*QUANTITY) AS price_total,
(DISCOUNT_AMOUNT*QUANTITY) AS discount_total,
((ITEM_PRICE-DISCOUNT_AMOUNT)*QUANTITY) AS item_total
FROM ORDER_ITEMS
WHERE item_total > 500
ORDER BY item_total DESC;
Error at Command Line : 7 Column : 7
Error report -
SQL Error: ORA-00904: "ITEM_TOTAL": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Я понятия не имею, почему он не имеет проблем с price_total ни discount_total, но сообщает item_total как недопустимый. Я пытаюсь сначала выбрать только предметы, которые имеют общую сумму более 500, когда сумма скидок вычитается и умножается на количество. Затем мне нужно сортировать результаты в порядке убывания по ITEM_TOTAL
Вашего название говорит все это. Алиасы столбцов не распознаются в предложении 'where'. Так работает SQL. Используйте подзапрос, CTE или повторите выражение. –
* почему у него нет проблем с price_total или discount_total * Я не верю, что другие псевдонимы работают на вас. Можете ли вы показать нам. –
также обратите внимание, что ваше сообщение об ошибке указывает на второй item_total ('Ошибка в командной строке: 7 столбцов: 7') и не жалуется на то же самое в строке 5. Удачи. – shellter