Link to home
Start Free TrialLog in
Avatar of Fred Webb
Fred WebbFlag for United States of America

asked on

Pass date range in UNION query

I have a script that UNIONs 3 queries which I then export to Excel. Each query uses the same date range (SOP30200.DOCDATE BETWEEN CONVERT(DATETIME, '2009-02-01', 102) AND CONVERT(DATETIME, '2009-02-15', 102)) to display the products sold within that range, I have to do this twice a month, I would like to find a way to enter the date range just once and have it pass it to all the queries.
SELECT     SOP30200.CUSTNAME, SOP30200.CUSTNMBR, SOP30200.FRTAMNT AS Freight_Amt, SOP30200.SHIPMTHD AS SHIPPING_MTHD, 
                      SOP10201.SOPNUMBE AS Invoice_No, SOP30200.DOCDATE AS Invoice_Date, POP30330.ITEMNMBR, POP30330.SERLTNUM, 
                      CASE WHEN IV00101.ITMGEDSC LIKE 'LG%' THEN 'LONG GUN' ELSE ITMGEDSC END AS PRODUCT_TYPE, SOP30300.UNITPRCE AS UNIT_PRICE, 
                      '' AS TAX_PAID, '' AS DATE_PAID, '' AS AMT_PAID, POP30330.DATERECD, POP30300.VENDORID, POP30300.VENDNAME, POP30310.ITEMDESC, 
                      POP30310.PONUMBER AS VENDPONUM
FROM         SOP30200 INNER JOIN
                      SOP10201 ON SOP30200.SOPTYPE = SOP10201.SOPTYPE AND SOP30200.SOPNUMBE = SOP10201.SOPNUMBE INNER JOIN
                      POP30330 INNER JOIN
                      POP30310 ON POP30330.POPRCTNM = POP30310.POPRCTNM AND POP30330.ITEMNMBR = POP30310.ITEMNMBR INNER JOIN
                      POP30300 ON POP30330.POPRCTNM = POP30300.POPRCTNM ON SOP10201.SERLTNUM = POP30330.SERLTNUM AND 
                      SOP10201.ITEMNMBR = POP30330.ITEMNMBR INNER JOIN
                      SOP30300 ON SOP10201.SOPTYPE = SOP30300.SOPTYPE AND SOP10201.SOPNUMBE = SOP30300.SOPNUMBE AND 
                      SOP10201.LNITMSEQ = SOP30300.LNITMSEQ AND SOP10201.CMPNTSEQ = SOP30300.CMPNTSEQ INNER JOIN
                      IV00101 ON SOP10201.ITEMNMBR = IV00101.ITEMNMBR
WHERE     (SOP10201.SOPTYPE = 3) AND (NOT (SOP30200.CUSTNMBR = 'ATI SERVICE')) AND (IV00101.ITMGEDSC IN ('LG558', 'LG035')) AND 
                   (SOP30200.DOCDATE BETWEEN CONVERT(DATETIME, '2009-02-01', 102) AND CONVERT(DATETIME, '2009-02-15', 102))
UNION ALL
SELECT     SOP30200.CUSTNAME, SOP30200.CUSTNMBR, SOP30200.FRTAMNT AS Freight_Amt, SOP30200.SHIPMTHD AS SHIPPING_MTHD, 
                      SOP10201.SOPNUMBE AS Invoice_No, SOP30200.DOCDATE AS Invoice_Date, POP30330.ITEMNMBR, POP30330.SERLTNUM, 
                      CASE WHEN IV00101.ITMGEDSC LIKE 'HG%' THEN 'HAND GUN' ELSE ITMGEDSC END AS PRODUCT_TYPE, SOP30300.UNITPRCE AS UNIT_PRICE, 
                      '' AS TAX_PAID, '' AS DATE_PAID, '' AS AMT_PAID, POP30330.DATERECD, POP30300.VENDORID, POP30300.VENDNAME, POP30310.ITEMDESC, 
                      POP30310.PONUMBER AS VENDPONUM
FROM         SOP30200 INNER JOIN
                      SOP10201 ON SOP30200.SOPTYPE = SOP10201.SOPTYPE AND SOP30200.SOPNUMBE = SOP10201.SOPNUMBE INNER JOIN
                      POP30330 INNER JOIN
                      POP30310 ON POP30330.POPRCTNM = POP30310.POPRCTNM AND POP30330.ITEMNMBR = POP30310.ITEMNMBR INNER JOIN
                      POP30300 ON POP30330.POPRCTNM = POP30300.POPRCTNM ON SOP10201.SERLTNUM = POP30330.SERLTNUM AND 
                      SOP10201.ITEMNMBR = POP30330.ITEMNMBR INNER JOIN
                      SOP30300 ON SOP10201.SOPTYPE = SOP30300.SOPTYPE AND SOP10201.SOPNUMBE = SOP30300.SOPNUMBE AND 
                      SOP10201.LNITMSEQ = SOP30300.LNITMSEQ AND SOP10201.CMPNTSEQ = SOP30300.CMPNTSEQ INNER JOIN
                      IV00101 ON SOP10201.ITEMNMBR = IV00101.ITEMNMBR
WHERE     (SOP10201.SOPTYPE = 3) AND (NOT (SOP30200.CUSTNMBR = 'ATI SERVICE')) AND (IV00101.ITMGEDSC IN ('HG200','HG140')) AND 
                      (SOP30200.DOCDATE BETWEEN CONVERT(DATETIME, '2009-02-01', 102) AND CONVERT(DATETIME, '2009-02-15', 102))
UNION ALL
SELECT     SOP30200.CUSTNAME, SOP30200.CUSTNMBR, SOP30200.FRTAMNT AS Freight_Amt, SOP30200.SHIPMTHD AS SHIPPING_MTHD, 
                      SOP10201.SOPNUMBE AS Invoice_No, SOP30200.DOCDATE AS Invoice_Date, POP30330.ITEMNMBR, POP30330.SERLTNUM, 
                      CASE WHEN IV00101.ITMGEDSC LIKE 'AM%' THEN 'AMMO' ELSE ITMGEDSC END AS PRODUCT_TYPE, SOP30300.UNITPRCE AS UNIT_PRICE, 
                      '' AS TAX_PAID, '' AS DATE_PAID, '' AS AMT_PAID, POP30330.DATERECD, POP30300.VENDORID, POP30300.VENDNAME, POP30310.ITEMDESC, 
                      POP30310.PONUMBER AS VENDPONUM
FROM         SOP30200 INNER JOIN
                      SOP10201 ON SOP30200.SOPTYPE = SOP10201.SOPTYPE AND SOP30200.SOPNUMBE = SOP10201.SOPNUMBE INNER JOIN
                      POP30330 INNER JOIN
                      POP30310 ON POP30330.POPRCTNM = POP30310.POPRCTNM AND POP30330.ITEMNMBR = POP30310.ITEMNMBR INNER JOIN
                      POP30300 ON POP30330.POPRCTNM = POP30300.POPRCTNM ON SOP10201.SERLTNUM = POP30330.SERLTNUM AND 
                      SOP10201.ITEMNMBR = POP30330.ITEMNMBR INNER JOIN
                      SOP30300 ON SOP10201.SOPTYPE = SOP30300.SOPTYPE AND SOP10201.SOPNUMBE = SOP30300.SOPNUMBE AND 
                      SOP10201.LNITMSEQ = SOP30300.LNITMSEQ AND SOP10201.CMPNTSEQ = SOP30300.CMPNTSEQ INNER JOIN
                      IV00101 ON SOP10201.ITEMNMBR = IV00101.ITEMNMBR
WHERE     (SOP10201.SOPTYPE = 3) AND (NOT (SOP30200.CUSTNMBR = 'ATI SERVICE')) AND (IV00101.ITMGEDSC LIKE 'AM52[01]%') AND 
                      (SOP30200.DOCDATE BETWEEN CONVERT(DATETIME, '2009-02-01', 102) AND CONVERT(DATETIME, '2009-02-15', 102))
ORDER BY 9;

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of BrandonGalderisi
BrandonGalderisi
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Fred Webb

ASKER

Perfect, Thanks for the quick responce