SQL联接2行并按分组求和

SQL联接2行并按分组求和,sql,sql-server,join,group-by,Sql,Sql Server,Join,Group By,我有3个表可以从中提取数据,我主要关注库存表数据。 我有以下嵌套选择查询,因为我不确定如何使用pivot函数,现在我正在处理groupby函数的限制。我想如果我能在代码末尾取消I[发货订单],它就会按照我想要的方式工作 SELECT (Select ShipDate FROM ShipOrder AS S Where S.[ShipOrder#]= I.[Ship Order #]) AS [Ship By] ,(Select [Billing Name] FROM tblCustomers

我有3个表可以从中提取数据,我主要关注库存表数据。 我有以下嵌套选择查询,因为我不确定如何使用pivot函数,现在我正在处理groupby函数的限制。我想如果我能在代码末尾取消I[发货订单],它就会按照我想要的方式工作

SELECT  
(Select ShipDate FROM ShipOrder AS S Where S.[ShipOrder#]= I.[Ship Order #]) AS [Ship By]
,(Select [Billing Name] FROM tblCustomers AS C WHERE C.[Key] = 
(Select CustomerKey FROM ShipOrder AS S Where S.[ShipOrder#]= I.[Ship Order #])) AS [Customer Name]
,I.[Type/Size]
,I.Product
,I.[Ship Order #]
,SUM(CASE WHEN I.[Ship Order #]=0 THEN I.[Gross Weight] - I.[Tare] ELSE 0 END) AS Inventory
,SUM(CASE WHEN I.[Ship Order #]>0 THEN I.[Gross Weight] - I.[Tare] ELSE 0 END) AS [Qty Ordered]
FROM INVENTORY I

WHERE I.[Type/Size] = 'W3401 3 3/4'
GROUP BY I.[Type/Size],I.Product,I.[Ship Order #]
这是结果。。。 但我希望这两行合并成一行,围绕发货订单13237值,但显示最大库存和最大订购数量值


不完全确定您想要什么,但看起来您可能只想按I中的列进行分组。使用普通联接,而不是子查询:

选择 最大发货日期为[发货人] ,MAXc.[账单名称]为[客户名称] ,I.[类型/尺寸] ,即产品 ,当I.[发货订单]=0时,则I.[毛重]-I.[皮重]否则0作为库存结束 ,当I.[发货订单]>0时,则I.[毛重]-I.[皮重]否则0结束为[订购数量] 清单一 在S.[ShipOrder]=I.[ShipOrder]上将ShipOrder作为S左连接 将TBL客户作为C上的C左连接[Key]=s.CustomerKey 其中I.[Type/Size]=“W34013/4” 按I.[类型/尺寸]分组,I.产品; 注:

这是输入错误:I.[发货订单]=0?通常写为空/不为空

我们是内部联接还是左联接,这取决于表之间的关系,即i.[Ship Order]和s.CustomerKey是否可以为null

帮自己一个忙,给出不需要括号的列名

不要将[Type/Size]存储在一起,将它们拆分为单独的列


1.不是输入错误,该值实际上是0或类似13134-14002的值。当我运行它时,我在关键字“WHERE”附近得到了不正确的语法。哎呀,对不起,将left join WHERE改为left join on。什么意思,您在ShipOrder中有一个ID为0的实际行?这是件奇怪的事,它不是索引。实际上,这些表都没有索引。除了执行这个select查询之外,我对数据库没有任何控制权。更改打开位置会导致此错误。Msg 8120,级别16,状态1,第2行列“ShipOrder.ShipDate”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。嗯,您实际希望如何对其进行分组?我们对哪些列求和或计数,哪些列需要每个不同的值,因此需要多行?我想返回一行,其中的值为W34013 3/4,2021-01-18,National Tobacco,13437,373,483。我想如果我们能够从这两行中取最大值,并将其作为一行的值,那就是它。