Thanks for the replies.
Here's the query that is compete and working. This is basically returning lines that have a ship date past their promised ship date, then filters and case statements, but at it core a ship date past their promised ship date report.
select
soitem.fac as [Fac],
somast.fcompany as [Customer],
shmast.fccompany as [End Customer],
soitem.fsono as [SO No],
somast.fsorev as [SO Rev],
soitem.fenumber as [Line Item],
soitem.fquantity as [SO Qty],
shitem.fshipqty as [Ship Qty],
sorels.fnetprice as [Sales Price],
soitem.fpartno as [Part No],
soitem.fpartrev as [Rev],
soitem.fdesc as [Desc],
soitem.fprodcl as [Prod Cls],
shmast.fshipdate as [Ship Dt],
SHITEM.FITEMNO AS [Ship Ln Item],
soitem_ext.field3 as [Prom Dt],
soitem_ext.field9 as [Reason],
--jomast.fstatus as [Status],
CASE
WHEN soitem.fprodcl = '10' then 'SUB'
WHEN soitem.fprodcl = '11' then 'PDU'
WHEN soitem.fprodcl = '12' then 'PDU'
WHEN soitem.fprodcl = '13' then 'PDU'
WHEN soitem.fprodcl = '14' then 'PDU'
WHEN soitem.fprodcl = '15' then 'X'
WHEN soitem.fprodcl = '16' then 'X'
WHEN soitem.fprodcl = '17' then 'X'
WHEN soitem.fprodcl = '18' then 'RPP'
WHEN soitem.fprodcl = '19' then 'X'
WHEN soitem.fprodcl = '1a' then 'RPP'
WHEN soitem.fprodcl = '1b' then 'RPP'
WHEN soitem.fprodcl = '1c' then 'PDU'
WHEN soitem.fprodcl = '1d' then 'X'
WHEN soitem.fprodcl = '1e' then 'RPP'
WHEN soitem.fprodcl = '1f' then 'BCMS'
WHEN soitem.fprodcl = '1g' then 'X'
WHEN soitem.fprodcl = '1h' then 'X'
WHEN soitem.fprodcl = '1J' then 'PDU'
WHEN soitem.fprodcl = '1K' then 'TRANS'
WHEN soitem.fprodcl = '20' then 'X'
WHEN soitem.fprodcl = '21' then 'PDU'
WHEN soitem.fprodcl = '22' then 'X'
WHEN soitem.fprodcl = '23' then 'PDU'
WHEN soitem.fprodcl = '24' then 'X'
WHEN soitem.fprodcl = '25' then 'HCS'
WHEN soitem.fprodcl = '26' then 'HCS'
WHEN soitem.fprodcl = '27' then 'HCS'
WHEN soitem.fprodcl = '30' then 'RPS'
WHEN soitem.fprodcl = '31' then 'LC'
WHEN soitem.fprodcl = '32' then 'X'
WHEN soitem.fprodcl = '35' then 'RPS'
WHEN soitem.fprodcl = '36' then 'RPS'
WHEN soitem.fprodcl = '37' then 'RPS'
WHEN soitem.fprodcl = '3a' then 'X'
WHEN soitem.fprodcl = '3b' then 'X'
WHEN soitem.fprodcl = '40' then 'STS - Sub'
WHEN soitem.fprodcl = '41' then 'X'
WHEN soitem.fprodcl = '42' then 'X'
WHEN soitem.fprodcl = '43' then 'X'
WHEN soitem.fprodcl = '44' then 'STS'
WHEN soitem.fprodcl = '45' then 'STS'
WHEN soitem.fprodcl = '46' then 'STS'
WHEN soitem.fprodcl = '47' then 'STS'
WHEN soitem.fprodcl = '4a' then 'STS'
WHEN soitem.fprodcl = '4b' then 'STS?'
WHEN soitem.fprodcl = '4c' then 'X'
WHEN soitem.fprodcl = '4z' then 'X'
WHEN soitem.fprodcl = '50' then 'X'
WHEN soitem.fprodcl = '51' then 'X'
WHEN soitem.fprodcl = '52' then 'X'
WHEN soitem.fprodcl = '53' then 'X'
WHEN soitem.fprodcl = '56' then 'BCMS'
WHEN soitem.fprodcl = '57' then 'X'
WHEN soitem.fprodcl = '58' then 'X'
WHEN soitem.fprodcl = '59' then 'X'
WHEN soitem.fprodcl = '60' then 'X'
WHEN soitem.fprodcl = '61' then 'X'
WHEN soitem.fprodcl = '62' then 'X'
WHEN soitem.fprodcl = '63' then 'X'
WHEN soitem.fprodcl = '64' then 'X'
WHEN soitem.fprodcl = '65' then 'X'
WHEN soitem.fprodcl = '66' then 'X'
WHEN soitem.fprodcl = '67' then 'X'
WHEN soitem.fprodcl = '68' then 'X'
WHEN soitem.fprodcl = '69' then 'X'
WHEN soitem.fprodcl = '6a' then 'SERV'
WHEN soitem.fprodcl = '6b' then 'X'
WHEN soitem.fprodcl = '6c' then 'X'
WHEN soitem.fprodcl = '6d' then 'SERV'
WHEN soitem.fprodcl = '6E' then 'SERV'
WHEN soitem.fprodcl = '6F' then 'SERV'
WHEN soitem.fprodcl = '6I' then 'X'
WHEN soitem.fprodcl = '6J' then 'X'
WHEN soitem.fprodcl = '6K' then 'X'
WHEN soitem.fprodcl = '6L' then 'X'
WHEN soitem.fprodcl = '6M' then 'X'
WHEN soitem.fprodcl = '6N' then 'X'
WHEN soitem.fprodcl = '6R' then 'X'
WHEN soitem.fprodcl = '74' then 'SERV'
WHEN soitem.fprodcl = '75' then 'SERV'
WHEN soitem.fprodcl = '80' then 'TRANS'
WHEN soitem.fprodcl = '81' then 'TRANS'
WHEN soitem.fprodcl = '82' then 'TRANS'
WHEN soitem.fprodcl = '83' then 'TRANS'
WHEN soitem.fprodcl = '84' then 'TRANS'
WHEN soitem.fprodcl = '85' then 'TRANS'
WHEN soitem.fprodcl = '8A' then 'TRANS'
WHEN soitem.fprodcl = '8B' then 'TRANS'
WHEN soitem.fprodcl = '90' then 'X'
WHEN soitem.fprodcl = '91' then 'X'
WHEN soitem.fprodcl = '93' then 'X'
WHEN soitem.fprodcl = '98' then 'X'
WHEN soitem.fprodcl = '99' then 'X'
WHEN soitem.fprodcl = '9a' then 'X'
WHEN soitem.fprodcl = '9b' then 'X'
WHEN soitem.fprodcl = '9C' then 'X'
WHEN soitem.fprodcl = 'A1' then 'SHT'
WHEN soitem.fprodcl = 'A2' then 'SHT'
WHEN soitem.fprodcl = 'A3' then 'SHT'
WHEN soitem.fprodcl = 'A4' then 'SHT'
WHEN soitem.fprodcl = 'A5' then 'BUS'
WHEN soitem.fprodcl = 'B1' then 'X'
WHEN soitem.fprodcl = 'B3' then 'X'
WHEN soitem.fprodcl = 'B4' then 'X'
WHEN soitem.fprodcl = 'CN' then 'X'
WHEN soitem.fprodcl = 'ON' then 'X'
WHEN soitem.fprodcl = 'PI' then 'X'
END AS Prod_Cls1,
CASE
** when shmast.fshipdate > SOITEM_EXT.FIELD3 then '0' --1 equals on time, 0 equals late**
** else '1' **
** end as [On_Time],**
**CASE **
** WHEN shmast.fshipdate >= '20150731'**
** AND shmast.fshipdate < '20150829' THEN '1'**
** **
** WHEN shmast.fshipdate >= '20150830'**
** AND shmast.fshipdate < '20150927' THEN '2'**
** **
** WHEN shmast.fshipdate >= '20150927'**
** AND shmast.fshipdate < '20151031' THEN '3'**
** **
** WHEN shmast.fshipdate >= '20151101'**
** AND shmast.fshipdate < '20151128' THEN '4'**
** **
** WHEN shmast.fshipdate >= '20151129'**
** AND shmast.fshipdate < '20151226' THEN '5'**
** **
** WHEN shmast.fshipdate >= '20151227'**
** AND shmast.fshipdate < '20160130' THEN '6'**
** **
** WHEN shmast.fshipdate >= '20160201'**
** AND shmast.fshipdate < '20160227' THEN '7'**
** **
** WHEN shmast.fshipdate >= '20160228'**
** AND shmast.fshipdate < '20160326' THEN '8'**
** **
** WHEN shmast.fshipdate >= '20160327'**
** AND shmast.fshipdate < '20160430' THEN '9'**
** **
** WHEN shmast.fshipdate >= '20160501'**
** AND shmast.fshipdate < '20160528' THEN '10'**
** **
** WHEN shmast.fshipdate >= '20160529'**
** AND shmast.fshipdate < '20160625' THEN '11'**
** **
** WHEN shmast.fshipdate >= '20160626'**
** AND shmast.fshipdate < '20160801' THEN '12'**
** ELSE 'X'**
** END AS FM,**
** CASE **
** WHEN shmast.fshipdate >= '20140801'**
** AND shmast.fshipdate < '20150801' THEN '2015'**
** WHEN shmast.fshipdate >= '20150801'**
** AND shmast.fshipdate < '20160731' THEN '2016'**
** ELSE 'X'**
** END AS FY,**
DATEDIFF(DD, shmast.fshipdate,SOITEM_EXT.FIELD3) AS [Days Late]
from soitem
LEFT JOIN soitem_ext
on soitem.identity_column = soitem_ext.fkey_id
**LEFT JOIN somast **
**ON soitem.fsono = somast.fsono **
**JOIN shmast **
ON (somast.fsono + somast.fsorev) = (shmast.fcsono + shmast.fcsorev)
**LEFT JOIN SORELS **
ON (SOITEM.FSONO + SOITEM.FPARTNO + SOITEM.FINUMBER + SOITEM.FSONO) = (SORELS.FSONO + SORELS.FPARTNO + SORELS.FINUMBER + SORELS.FSONO)
**LEFT JOIN SHITEM **
ON ((SHMAST.FSHIPNO + SOITEM.FPARTNO + SOITEM.FAC) + (SORELS.FSONO + SORELS.FINUMBER + SORELS.FRELEASE)) = ((SHITEM.FSHIPNO + SHITEM.FPARTNO + SHITEM.FAC) + (SHITEM.FSOKEY))
**--JOIN jomast **
--ON shmast.fcsono = jomast.fsono
**where **
shitem.fshipqty = shitem.forderqty
and
shmast.fshipdate > SOITEM_EXT.FIELD3
and
shitem.fshipqty <> '0'
and
SOITEM_EXT.FIELD3 <> '1/1/1900 12:00:00 AM'
**AND **
(soitem.fprodcl <> '54'
and
soitem.fprodcl <> '55'
and
soitem.fprodcl <> '70'
and
soitem.fprodcl <> '71'
and
soitem.fprodcl <> '72'
and
soitem.fprodcl <> '73'
and
soitem.fprodcl <> '76'
and
soitem.fprodcl <> '77'
and
soitem.fprodcl <> '78'
and
soitem.fprodcl <> '79'
and
soitem.fprodcl <> '7A'
and
soitem.fprodcl <> 'FR'
and
soitem.fprodcl <> 'SH')
order by soitem.fsono ASC
one final feature I need is to only bring in lines where there are no more items left to ship on the order. There is no field in the tables that flags the order as complete or the line item as the last one in the order, so I have this query that will show me that info. This is the query I desperately need to incorporate into the first attached code.
**SELECT shmast.fcsono, shitem.fenumber, Sum(shitem.fshipqty) AS SumOffshipqty, **
sorels.forderqty, Max(shmast.fshipdate) AS MaxOffshipdate
**FROM sorels **
**INNER JOIN (shmast INNER JOIN shitem ON shmast.fshipno = shitem.fshipno) **
ON (sorels.fsono = shmast.fcsono) AND (sorels.fenumber = shitem.fenumber)
Thanks again for your time. I hope I've explained this properly.