我所有的查询都在项目级别生成数据。当我要运行几个月的报表时,由于这个问题,我经常在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
结果将产生包含所有完全相同信息的几行。这样做的原因是因为客户订购了几件物品,并且所有物品都以同一包装装运。每个包装只需要一行数据。
答案 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)
这将汇总您的详细信息行。