#sql
#sql
Вопрос:
Привет, я написал следующий запрос, но когда я запускаю, он показывает мне следующее исключение:
Subquery returned more than 1 value. This is not permitted when the subquery follows
=,!=, <, <= , >, >= or when the subquery is used as an expression.
SELECT ITEM_MODEL,
ITEM_NAME,
ITEM_DESCRIPTION,
VENDOR_NAME,
(Select QUANTITY from ITEMS_MASTER ),
RATE=(CASE WHEN Discount IS NULL OR Discount=0 THEN RATE ELSE
RATE-(RATE*(Discount/100)) END),
AMOUNT=(CASE WHEN Discount IS NULL OR Discount=0 THEN AMOUNT ELSE
AMOUNT-(AMOUNT*(Discount/100)) END) ,
INVOICE_NUM,
DATE,
Discount
FROM ITEM_DETAILS ORDER BY ITEM_MODEL
Раньше это работало отлично, но я не знаю, что с ним произошло, внезапно я знаю, что это невероятно, но, к сожалению, это правда 😉 .. Любая помощь была бы весьма признательна.
Комментарии:
1. Каков результат
Select QUANTITY from ITEMS_MASTER
сам по себе?2. Не уверен, что это за
C#
вопрос. Удален тег.3. @tnw .. На самом деле я использую его в ADO.NET .. вот почему я пометил C#
4. И это одна из причин, по которой подзапрос в части выбора запроса является антишаблоном SQL, и его следует избегать (другая — производительность) . Когда вы его писали, была только одна повторная запись, которая удовлетворяла условию, теперь их больше одного.
Ответ №1:
Несомненно, проблема со (Select QUANTITY from ITEMS_MASTER ),
строкой. Прежде всего, логика кажется нарушенной, поскольку между двумя таблицами нет корреляции.
Возможно, должно быть соединение с ITEMS_MASTER
таблицей на основе идентификатора элемента, а затем простой выбор QUANTITY
поля без использования подзапроса.