合并行帮助。行完全相同

时间:2019-05-31 18:56:52

标签: mysql sql

我所有的查询都在项目级别生成数据。当我要运行几个月的报表时,由于这个问题,我经常在excel中用完所有行。

如果客户订购了5件衬衫,并且它们以相同的包装寄出,我的查询将产生5行完全相同的数据。我不在乎客户订购了什么,我只想知道有1个包裹出去了。可能包含5个单位(查询中的数量)。

我尝试使用“ max”函数,但查询失败。

select 

p.TrackingNumber,
oh.BusinessUnitCode,
cc.Qty,
oh.ShipCode,
p.ContainerID,
convert(date,oh.ShipTime) as 'OrderDate',
oh.OrderNumber 

from dmhost.tblOrderHeader oh

join dmhost.tblContainer c on oh.OrderHeaderID = c.OrderHeaderID
join dmhost.tblPackage p on c.ContainerID = p.ContainerID
join dmhost.tblContainerContents cc on c.ContainerID = cc.ContainerID
join dmhost.tblItemMaster im on im.ItemMasterID = cc.ItemMasterID

where (oh.ShipTime between '2018-05-01' and '2018-05-16')

and cc.Qty <> 0

order by p.ContainerID

结果将产生包含所有完全相同信息的几行。这样做的原因是因为客户订购了几件物品,并且所有物品都以同一包装装运。每个包装只需要一行数据。

1 个答案:

答案 0 :(得分:1)

这是GROUP BY.的工作,您尚未提供足够的信息来确切地告诉我们您在每个结果行中想要什么。所以这是一个猜测:

SELECT oh.BusinessUnitCode,
       SUM(cc.Qty) Qty,
       COUNT(*) OrderCount,
       oh.ShipCode,
       p.ContainerID,
       convert(date,oh.ShipTime) as 'OrderDate'
  FROM whatever tables and joins
 WHERE whatever filters
 GROUP BY oh.BusinessUnitCode,
       oh.ShipCode,
       p.ContainerID,
       convert(date,oh.ShipTime) 

这将汇总您的详细信息行。