简体   繁体   中英

MS Access SQL(Jet SQL)| Syntax Error(Missing Estatement)

I am writing a query in MS Access SQL doing some math.

SELECT
    DISTINCT QParts.PartsNumber,
    SWITCH(([dbo_ICILOC].[QTYONHAND] + [dbo_ICILOC].[QTYRENOCST] + [dbo_ICILOC].[QTYADNOCST] - [dbo_ICILOC].[QTYSHNOCST] - [dbo_ICILOC].[QTYCOMMIT]) IS NULL,
            0,
            ([dbo_ICILOC].[QTYONHAND] + [dbo_ICILOC].[QTYRENOCST] + [dbo_ICILOC].[QTYADNOCST] - [dbo_ICILOC].[QTYSHNOCST] - [dbo_ICILOC].[QTYCOMMIT]) <= 0,
            0, ([dbo_ICILOC].[QTYONHAND] + [dbo_ICILOC].[QTYRENOCST] + [dbo_ICILOC].[QTYADNOCST] - [dbo_ICILOC].[QTYSHNOCST] - [dbo_ICILOC].[QTYCOMMIT]) >= 0,
            ([dbo_ICILOC].[QTYONHAND] + [dbo_ICILOC].[QTYRENOCST] + [dbo_ICILOC].[QTYADNOCST] - [dbo_ICILOC].[QTYSHNOCST] - [dbo_ICILOC].[QTYCOMMIT])) AS avqty,
    SWITCH(dbo_ICILOC.QTYONORDER IS NULL,
            0,
            dbo_ICILOC.QTYONORDER >= 0,
            (([AESTUSA.QTYONORDER] + [dbo_ICILOC].[QTYONORDER]) + SUM(IIf(([dbo_ICILOC].[QTYONHAND] - [dbo_ICILOC].[QTYCOMMIT]) > 0,
            0,
            ([dbo_ICILOC].[QTYONHAND] - [dbo_ICILOC].[QTYCOMMIT])))) AS qtyorder
FROM
    QParts
LEFT JOIN
    dbo_ICILOC ON
        QParts.PartsNumber = dbo_ICILOC.ITEMNO
    AND
        dbo_ICILOC.LOCATION = "UBN"     
LEFT JOIN
    dbo_ICILOC AS AESTUSA ON
        QParts.PartsNumber = AESTUSA.ITEMNO
    AND
        AESTUSA.LOCATION = "UBCUST";

but this query gives me a lot of errors. What am I missing?

I think your joins are wrong. Move the criteria to a Where clause:

SELECT DISTINCT QParts.PartsNumber
    ,switch(([dbo_ICILOC].[QTYONHAND] + [dbo_ICILOC].[QTYRENOCST] + [dbo_ICILOC].[QTYADNOCST] - [dbo_ICILOC].[QTYSHNOCST] - [dbo_ICILOC].[QTYCOMMIT]) IS NULL, 0, ([dbo_ICILOC].[QTYONHAND] + [dbo_ICILOC].[QTYRENOCST] + [dbo_ICILOC].[QTYADNOCST] - [dbo_ICILOC].[QTYSHNOCST] - [dbo_ICILOC].[QTYCOMMIT]) <= 0, 0, ([dbo_ICILOC].[QTYONHAND] + [dbo_ICILOC].[QTYRENOCST] + [dbo_ICILOC].[QTYADNOCST] - [dbo_ICILOC].[QTYSHNOCST] - [dbo_ICILOC].[QTYCOMMIT]) >= 0, ([dbo_ICILOC].[QTYONHAND] + [dbo_ICILOC].[QTYRENOCST] + [dbo_ICILOC].[QTYADNOCST] - [dbo_ICILOC].[QTYSHNOCST] - [dbo_ICILOC].[QTYCOMMIT])) AS avqty
    ,switch(dbo_ICILOC.QTYONORDER IS NULL, 0, dbo_ICILOC.QTYONORDER >= 0, (([AESTUSA.QTYONORDER] + [dbo_ICILOC].[QTYONORDER]) + SUM(IIf(([dbo_ICILOC].[QTYONHAND] - [dbo_ICILOC].[QTYCOMMIT]) > 0, 0, ([dbo_ICILOC].[QTYONHAND] - [dbo_ICILOC].[QTYCOMMIT])))) AS qtyorder

FROM QParts 
LEFT JOIN dbo_ICILOC ON QParts.PartsNumber = dbo_ICILOC.ITEMNO
LEFT JOIN dbo_ICILOC AS AESTUSA ON QParts.PartsNumber = AESTUSA.ITEMNO

WHERE
    dbo_ICILOC.LOCATION = "UBN"
    AND 
    AESTUSA.LOCATION = "UBCUST";

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM