Well, you could try something like this:
,min(ShipmentNo) as FirstShipment
,max(ShipmentNo) as LastShipment
,count(ShipmentNo) as NoOfShipments
,concat(ShipmentNo, ' | ') as ShipmentNoList
group by OrderNo;
min and max will only work if the shipment numbers are actually numbers. If they aren't you could try using minstring and maxstring or the First and Last functions.