0

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?

General Failure
  • 2,421
  • 4
  • 23
  • 49

1 Answers1

0

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";
Gustav
  • 53,498
  • 7
  • 29
  • 55