0

我需要显示四个参数来显示年份和期间之间的数据,例如我想返回发生在 2011 年期间 12 和 2012 年期间 4 之间的交易

我已经走了这么远,但不知道把我放在哪里,我想我还需要 <= 或 >= 某处?

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
4

1 回答 1

0

将@Year 和@Period 条件替换为:

(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))

或者,使用参数:

(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))
于 2013-07-26T22:08:23.080 回答