SQL Server-Group by返回相同的信息
我习惯于MySQL如何与Group_Concat配合使用,因此很难理解SQL server如何与Group Concat配合使用。由于选择了Bx值,因此无法仅按PPNumber对xml路径分组 是否有一种方法可以根据pp.[PPNumber]作为PartNumber列对Bx值的分隔列表进行分组,还是有一种更好的方法可以让Bx仅按xml路径分组中的PPNumber列进行分组SQL Server-Group by返回相同的信息,sql,stored-procedures,grouping,Sql,Stored Procedures,Grouping,我习惯于MySQL如何与Group_Concat配合使用,因此很难理解SQL server如何与Group Concat配合使用。由于选择了Bx值,因此无法仅按PPNumber对xml路径分组 是否有一种方法可以根据pp.[PPNumber]作为PartNumber列对Bx值的分隔列表进行分组,还是有一种更好的方法可以让Bx仅按xml路径分组中的PPNumber列进行分组 SELECT pp.[PPNumber] as PartNumber, COUNT(PSN) as ActualCou
SELECT
pp.[PPNumber] as PartNumber,
COUNT(PSN) as ActualCount,
replace((SELECT b.Bx AS [data()]
FROM def.dbo.[boxes] b
Group By b.[PPNumber] ,b.Bx
ORDER BY b.Bx
FOR xml path('')), ' ', ',') as Bxs
FROM def.dbo.[packtable] p
JOIN (SELECT Bx, [PPNumber] FROM def.dbo.[boxes] WHERE (CONCAT(Completed, '
', CompletedTime) > @sDate AND CONCAT(Completed,' ', CompletedTime) <
@eDate)) b on p.Bx= b.Bx
JOIN def.dbo.[PPNumlist] pp on b.[PPNumber] = pp.[PPNumber]
GROUP BY pp.[PPNumber]
ORDER BY pp.[PPNumber] ;
@子查询与主查询不相关。这一点我同意,但我不知道最好的办法。然而,我使用一个函数进行了测试,结果是正确的 我所做的只是通过了PN和日期范围,结果成功了
SELECT
pp.[PPNumber] as PartNumber,
COUNT(PSN) as ActualCount,
def.dbo.udf_Get_PackedBoxListByPN(pp.[PPNumber], @sDate,@eDate) as Bxs
如果您可以发布一些示例数据,这将有所帮助,因为从结果和sql语句进行逆向工程非常困难。我怀疑问题在于SELECT子句中的子查询与主查询不相关,子查询的WHERE子句中的def.dbo.BOX与主查询的两个表之间没有关系。我还怀疑子查询是不必要的,因为您已经将box表加入了其中。样本数据将有助于澄清。样本数据在图像中。那么,我还应该提供哪些其他信息来帮助您呢@JNevill@JNevill就是要求你发布一个你开始的样本,而不仅仅是你想要的结果。在没有上下文的情况下查看查询会使任务变得更加困难。符合所需结果的数据,因此包含零件1112-1和1112-2以及方框1、2、3、4、5的记录。然后,我们将知道您的数据在数据库中的外观,以及您当前的问题,您希望它的外观。然后我们可以帮你写出SQL,让你达到目的。哦,好的。最初没有想到显示每个表的信息。很抱歉。最后我玩了更多,得到了一个传递每个PN值的函数,并让每个分隔的Bx列表工作