2016-01-12 64 views
0

我正在寫一個查詢在MS Access SQL做一些數學。MS Access SQL(Jet SQL)|語法錯誤(缺失的遺產)

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"; 

但這個查詢給了我很多錯誤。我錯過了什麼?

回答

0

我認爲你的連接是錯誤的。將條件移到Where子句中:

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"; 
+0

您是否認爲在Jet Sql中「Group by」不是必需的? –

+0

_Group By_是可能的,但不是必需的。 「DISTINCT」有效地強制在所有字段上進行分組。 – Gustav