Подзапрос вернул более 1 значения. Это не разрешено, когда подзапрос следует =,!=, <, , >= …?

#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 поля без использования подзапроса.