Sql server SQL Server子查询返回的值超过1。这是不允许的

Sql server SQL Server子查询返回的值超过1。这是不允许的,sql-server,Sql Server,我有这个疑问 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].[OrderDetai

我有这个疑问

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)
但是当我运行查询时,我得到了这个错误

Msg 512,16级,状态1,第4行 子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时


为什么会出现此错误以及如何修复它。提前感谢。

GROUPBY自然会生成多行,而select语句中的子查询只需要一行

您需要以外部查询与内部查询关联的方式更改group by

诀窍是添加
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

错误消息解释了问题所在。您试图在SELECT子句中使用查询。这是一个坏主意,只有在该查询返回单个值时才能起作用。如果将其从SELECT子句移动到交叉应用@DervişKayımbaşıoğlu会更好。非常感谢您的帮助,在子查询中添加更多group by(group by rawmat.FKğItem,rawmat)[长度],rawmat。[Width])我得到了相同的错误,但这次我得到了查询已完成但有错误的结果