Question

I Need to show four parameters to show data between year and period, for example i would want to return transactions that occured between year 2011 period 12 and year 2012 period 4

ive got so far but not sure where to put my between and i guess i also need to <= or >= somewhere?

SELECT  
    dbo.MBO450.cmpcode AS CMPCODE, 
    dbo.MBO300.yr AS YR, 
    dbo.MBO300.period AS PERIOD, 
    dbo.MBO300.inpdate AS INPUT_DATE, 
    dbo.MBO300.docdate AS DOCUMENT_DATE, 
    dbo.MBO450.doccode AS DOCCODE, 
    dbo.MBO450.docnum AS DOCNUM, 
    dbo.MBO450.el2 AS EL2, 
    dbo.MBO110.vat AS VATCODE, 
    dbo.MBO450.ref1 AS SUPPLIER_INVOICE, 
    dbo.MBO450.ref2 AS INVOICE_REGISTER, 
    dbo.MBO450.ref3 AS EXT_REF3, 
    dbo.MBO450.ref4 AS EXT_REF4, 
    dbo.MBO130.name AS EL2_NAME, 
    MBO450_1.el2 AS SUPPLIER, 
    MBO130_1.name AS [SUPPLIER NAME], 
    dbo.MBO440.vat, 
    dbo.MBO440.federaltax, 
    dbo.MBO440.ten99code, 
    dbo.MBO320.add1, 
    dbo.MBO320.add2, 
    dbo.MBO320.add3, 
    dbo.MBO320.add4, 
    dbo.MBO320.add5, 
    dbo.MBO320.add6, 
    dbo.MBO320.postcode, 
    dbo.MBO320.country, 
    dbo.MBO320.tel, 
    dbo.MBO320.fax, 
    dbo.MBO450.doctaxturn 
FROM 
    dbo.MBO300 
    INNER JOIN dbo.MBO450 
          ON dbo.MBO300.cmpcode = dbo.MBO450.cmpcode 
             AND dbo.MBO300.doccode = dbo.MBO450.doccode 
             AND dbo.MBO300.docnum = dbo.MBO450.docnum 
    INNER JOIN dbo.MBO110 
          ON dbo.MBO450.cmpcode = dbo.MBO110.code 
    INNER JOIN dbo.MBO130 
          ON dbo.MBO450.cmpcode = dbo.MBO130.cmpcode 
             AND dbo.MBO450.el2 = dbo.MBO130.code 
    INNER JOIN dbo.MBO450 AS MBO450_1 
          ON dbo.MBO450.cmpcode = MBO450_1.cmpcode 
             AND dbo.MBO450.doccode = MBO450_1.doccode 
             AND dbo.MBO450.docnum = MBO450_1.docnum 
    INNER JOIN dbo.MBO130 AS MBO130_1 
          ON MBO450_1.el2 = MBO130_1.code 
    INNER JOIN dbo.MBO440 
          ON MBO450_1.el2 = dbo.MBO440.elmcode 
    INNER JOIN dbo.MBO320 
          ON MBO450_1.el2 = dbo.MBO320.elmcode 
WHERE 
    (dbo.MBO450.el2 = 'VIZ') 
    AND (MBO450_1.el2 LIKE 'S%')
    AND dbo.MBO300.yr LIKE (@YEAR) 
    AND dbo.MBO300.period LIKE (@PERIOD) 
ORDER BY 
    YR, PERIOD, DOCNUM
Was it helpful?

Solution

Replace the @Year and @Period conditions with:

(dbo.MBO300.yr > 2011 
    OR (dbo.MBO300.yr = 2011 
        AND dbo.MBO300.period >= 12))
AND (dbo.MBO300.yr < 2012
    OR (dbo.MBO300.yr = 2012 
        AND dbo.MBO300.period <= 4))

Or, to use parameters:

(dbo.MBO300.yr > @YEAR_START
    OR (dbo.MBO300.yr = @YEAR_START 
        AND dbo.MBO300.period >= @PERIOD_START))
AND (dbo.MBO300.yr < @YEAR_END
    OR (dbo.MBO300.yr = @YEAR_END
        AND dbo.MBO300.period <= @PERIOD_END))
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top