Подзапрос SQL Server вернул более 1 значения. Это не разрешено - PullRequest
0 голосов
/ 31 мая 2019

У меня есть этот запрос

SELECT 
   concat(section.SectionType,Item.Size,'-',Grade.Grade)as 'item'
  ,sum([RemainingQuantity]) as 'Quantity'
  ,[Length]
  ,[Width]
  ,loc.Location
 ,(Select sum(ODRM.[QuantityBooking]-ODRM.ChangeLocationQty) 
    FROM [dbo].[OrderDetailsRawMaterial] ODRM
    inner join RawMaterial rawmat on rawmat.id=[FK_RawMaterial]
    Where  ODRM.[QuantityBooking] >ODRM.ChangeLocationQty
    Group By rawmat.FK_Item
    )as'QuantityBooking' 
FROM [dbo].[RawMaterial]
inner join item on Item.id=FK_Item
inner join SectionType section on section.id=Item.FK_SectionType
inner join Grade on Grade.id=Item.FK_Grade
inner join Location loc on loc.id=FK_Location
Where show=1 and ShowQuality=1 and [RemainingQuantity]>0
Group By
 concat(section.SectionType,Item.Size,'-',Grade.Grade)
 , [Length]
  ,[Width]
  ,loc.Location
Order By concat(section.SectionType,Item.Size,'-',Grade.Grade)

но когда я запускаю запрос, я получаю эту ошибку

Сообщение 512, Уровень 16, Состояние 1, Строка 4 Подзапрос вернул более 1 значения. Это недопустимо, если подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения.

Почему я получаю эту ошибку и как ее исправить. Заранее спасибо.

1 Ответ

2 голосов
/ 31 мая 2019

group by, естественно, создает более одной строки, тогда как подзапросу в операторе select требуется только одна.

Вам нужно изменить группу так, чтобы внешний запрос был связан с внутренним запросом.

хитрость заключается в том, чтобы добавить awmat.FK_Item = item.Id

Изменить внутренний запрос следующим образомниже

select sum(ODRM.[QuantityBooking]-ODRM.ChangeLocationQty) 
FROM [dbo].[OrderDetailsRawMaterial] ODRM
inner join RawMaterial rawmat on rawmat.id=[FK_RawMaterial]
Where  ODRM.[QuantityBooking] >ODRM.ChangeLocationQty
  and awmat.FK_Item = item.Id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...