darrellblackhawk
Programmer
I'm modifying some SQL Reporting Services reports that present data from a Great Plains accounting system.
GP uses SQL Server as its datastore - ergo - Reporting Services.
Here's my dilemma:
Great Plains contains: three columns for phone numbers & one for fax numbers per customer and customer contact records.
Unfortunately, the way they implemented phone number fields is a bit cumbersome.
All phone nuimbers are represented as 14 character strings and are stored such as 65087332222200 with a mask of (XXX) XXX-XXXX ext (XXXX) for an expected display of (650) 873-3222 ext 22. (Only #'s are allowed in the UI's entry fields for phone numbers - i.e. can't use spaces to overwrite the 0's)
The way it actually displays is (650) 873-3222 ext 2200 - which is obviously not the desired outcome.
As you can tell, this will be a bit confusing for any user of the report.
Below I've pasted a 'knarley' select statement which I want to mask off any trailing 0's from phone fields.
Anybody have any ideas of how to do this in-line and not require function calls or 'Step-Stripping'?
I'm still growing in SQL’s Lingua Franca - so I apologize in advance if this is simple.
Thanks.
Darrell
Code:
select
abs_sales_header.soptype,
abs_sales_header.sopnumbe,
abs_sales_header.docid,
abs_sales_header.docdate,
abs_sales_header.pymtrmid,
abs_sales_header.custnmbr,
abs_sales_header.custname,
abs_sales_header.cstponbr,
abs_sales_header.mstrnumb,
abs_sales_header.prbtadcd,
abs_sales_header.prstadcd,
abs_sales_header.cntcprsn,
abs_sales_header.shiptoname,
abs_sales_header.address1,
abs_sales_header.address2,
abs_sales_header.address3,
abs_sales_header.city,
abs_sales_header.state,
abs_sales_header.zipcode,
[red]abs_sales_header.phnumbr1, -- { Strip these of trailing 0's
abs_sales_header.phnumbr2,
abs_sales_header.phone3,
abs_sales_header.faxnumbr, [/red]
abs_sales_header.docamnt,
abs_sales_header.salsterr,
abs_sales_header.slprsnid,
abs_sales_header.noteindx,
abs_sales_header.TableSource,
abs_sales_line.lnitmseq,
abs_sales_line.itemnmbr,
abs_sales_line.itemdesc,
abs_sales_line.TimeBlock,
TimeBlockAMPM =
CASE
when abs_sales_line.TimeBlock LIKE '%AM%' THEN 'AM'
when abs_sales_line.TimeBlock LIKE '%PM%' THEN 'PM'
when abs_sales_line.TimeBlock LIKE '%N%' THEN 'PM'
ELSE ''
END,
abs_sales_line.unitprce,
abs_sales_line.xtndprce,
abs_sales_line.quantity,
abs_sales_line.WeekStartDate,
abs_sales_line.DayofWeek,
sy03900.txtfield,
abs_sales_copy_entry.campaignid,
abs_sales_copy_entry.campaignname,
abs_sales_copy_entry.sendtape,
abs_sales_copy_entry.sendaffidavit,
abs_sales_copy_entry.phonetic,
abs_sales_copy_entry.salescomment2,
abs_sales_copy_entry.confirmed,
abs_sales_copy_entry.sendcopy,
rm00102auth.cntcprsn AS authorized,
sy01200auth.inet7 AS authorizedtitle,
rm00102attn.cntcprsn AS attention,
pm00200.vendorid,
pm00200.vendname,
pm00200.city AS vendorcity,
pm00200.comment1,
rm00103.custblnc
FROM abs_sales_line INNER JOIN
abs_sales_header ON abs_sales_line.soptype = abs_sales_header.soptype AND
abs_sales_line.sopnumbe = abs_sales_header.sopnumbe LEFT OUTER JOIN
sy03900 ON abs_sales_header.noteindx = sy03900.noteindx LEFT OUTER JOIN
rm00102 rm00102auth ON abs_sales_header.custnmbr = rm00102auth.custnmbr AND
abs_sales_header.prstadcd = rm00102auth.adrscode LEFT OUTER JOIN
rm00102 rm00102attn ON abs_sales_header.custnmbr = rm00102attn.custnmbr AND
abs_sales_header.prbtadcd = rm00102attn.adrscode LEFT OUTER JOIN
sy01200 sy01200auth ON abs_sales_header.custnmbr = sy01200auth.Master_ID AND
abs_sales_header.prstadcd = sy01200auth.adrscode AND
sy01200auth.Master_Type = 'CUS' LEFT OUTER JOIN
abs_sales_copy_entry ON abs_sales_header.sopnumbe = abs_sales_copy_entry.sopnumbe AND
abs_sales_header.soptype = abs_sales_copy_entry.soptype LEFT OUTER JOIN
pm00200 ON LEFT(abs_sales_line.itemnmbr, 7) = LEFT(pm00200.vendorid, 7) LEFT OUTER JOIN
rm00103 ON abs_sales_header.custnmbr = rm00103.custnmbr
WHERE (abs_sales_header.soptype = 3 OR abs_sales_header.soptype = 4) AND
abs_sales_header.TableSource = @PostingStatus AND
abs_sales_header.sopnumbe >= @StartInvoice AND
abs_sales_header.sopnumbe <= @EndInvoice AND abs_sales_header.docdate >= @StartDate AND
abs_sales_header.docdate <= (@EndDate + 1)
ORDER BY abs_sales_header.sopnumbe, abs_sales_line.WeekStartDate, TimeBlockAMPM