2017-05-29 159 views
0

我的查詢是不是在所有的工作,並一直在努力,看看出了什麼問題,但無法找到它。說有兩個值是相同的,但說實話,我盡我所能去校對我的代碼:SQL查詢數據庫的Microsoft SQL Server

SELECT 
"HQCO"."HQCo", 
"HQCO"."Name", 
"JCJP"."Contract", 
"JCJP"."Item", 
"JCJP"."Phase", 
"JCCP"."CostType", 
"JCCI"."Item", 
"JCCI"."Description", 
"JCCP"."Phase", 
"JCJP"."Description", 
"JCCT"."Description", 
"JCCH"."UM", 
"JCCP"."CurrEstUnits", 
"JCCP"."CurrEstCost", 
"JCCP"."ActualUnits", 
"JCCP"."ActualCost", 
"JCCM"."Description", 
"JCJP"."JCCo", 
"JCCP"."ProjCost", 
"JCCP"."RemainCmtdCost", 
"JCCP"."ProjPlug", 
"JCCP"."Mth", 
"JCCI"."BilledAmt", 
"JCCM"."BilledAmt", 
"JCCM"."udGEACrev", 
"JCCP"."Job", 
"JCCM"."Department", 
"JCJM"."ProjectMgr", 
"JCMP"."Name" 

FROM 
(
(((((("Viewpoint"."dbo"."JCCP" "JCCP" 
     INNER JOIN 
     "Viewpoint"."dbo"."HQCO" "HQCO" 
     ON "JCCP"."JCCo" = "HQCO"."HQCo") 
     INNER JOIN 
     "Viewpoint"."dbo"."JCCT" "JCCT" 
     ON ("JCCP"."PhaseGroup" = "JCCT"."PhaseGroup") 
     AND 
     (
      "JCCP"."CostType" = "JCCT"."CostType" 
     ) 
) 
     LEFT OUTER JOIN 
     "Viewpoint"."dbo"."JCCH" "JCCH" 
     ON (((("JCCP"."JCCo" = "JCCH"."JCCo") 
     AND 
     (
      "JCCP"."Job" = "JCCH"."Job" 
     ) 
) 
     AND 
     (
      "JCCP"."PhaseGroup" = "JCCH"."PhaseGroup" 
     ) 
) 
     AND 
     (
      "JCCP"."Phase" = "JCCH"."Phase" 
     ) 
) 
     AND 
     (
      "JCCP"."CostType" = "JCCH"."CostType" 
     ) 
) 
      LEFT OUTER JOIN 
      "Viewpoint"."dbo"."JCJP" "JCJP" 
      ON ((("JCCP"."JCCo" = "JCJP"."JCCo") 
      AND 
     (
      "JCCP"."Job" = "JCJP"."Job" 
     ) 
) 
      AND 
     (
      "JCCP"."PhaseGroup" = "JCJP"."PhaseGroup" 
     ) 
) 
      AND 
     (
      "JCCP"."Phase" = "JCJP"."Phase" 
     ) 
) 
     LEFT OUTER JOIN 
      "Viewpoint"."dbo"."JCCI" "JCCI" 
     ON (("JCJP"."JCCo" = "JCCI"."JCCo") 
     AND 
     (
      "JCJP"."Contract" = "JCCI"."Contract" 
     ) 
) 
     AND 
     (
      "JCJP"."Item" = "JCCI"."Item" 
     ) 
) 
     INNER JOIN 
     "Viewpoint"."dbo"."JCCM" "JCCM" 
     ON ("JCCI"."JCCo" = "JCCM"."JCCo") 
     AND 
     (
      "JCCI"."Contract" = "JCCM"."Contract" 
     ) 
) 
     INNER JOIN 
      "Viewpoint"."dbo"."JCJM" "JCJM" 
      ON ("JCCM"."JCCo" = "JCJM"."JCCo") 
      AND 
     (
      "JCCM"."Contract" = "JCJM"."Job" 
     ) 
    ) 
     LEFT OUTER JOIN 
     "Viewpoint"."dbo"."JCMP" "JCMP" 
     ON ("JCJM"."JCCo" = "JCMP"."JCCo") 
     AND 
     (
      "JCJM"."ProjectMgr" = "JCMP"."ProjectMgr" 
     ) 




WHERE 
    "JCCP"."Mth" < {ts '2017-04-02 00:00:00'} 
    AND "JCJP"."JCCo" = 1 
    AND "JCJM"."ProjectMgr" = 8 
    AND "JCCM"."Department" = '10' 
    ORDER BY 
     "JCJP"."Contract", "JCJP"."Item", "JCJP"."Phase", "JCCP"."CostType" 

正如你所看到的所有表和值相關,與內加入和外部連接,以補充表。這是一個報告

+0

什麼是你所得到的錯誤消息。你能把它粘貼在這裏嗎? –

+0

無法創建查詢字段的列表。驗證您是否可以連接到數據源,並且查詢語法是否正確。 「具有相同鍵的項已被添加 –

+0

唔...你在使用 –

回答

0

您的查詢有多個問題。

1) Problem with parenthese (too '(') 
2) You use left outer join on table and you test a zone of this table -> null will be excluded like it 
3) Multiples Zones in your select with same name 
4) Quotes for zones and alias for tables are not necessary 

嘗試此查詢remainded:

SELECT 
HQCO.HQCo, 
HQCO.Name, 
JCJP.Contract, 
JCJP.Item, 
JCJP.Phase, 
JCCP.CostType, 
JCCI.Item, 
JCCI.Description Desc1, 
JCCP.Phase, 
JCJP.Description Desc2, 
JCCT.Description Desc3, 
JCCH.UM, 
JCCP.CurrEstUnits, 
JCCP.CurrEstCost, 
JCCP.ActualUnits, 
JCCP.ActualCost, 
JCCM.Description Desc4, 
JCJP.JCCo, 
JCCP.ProjCost, 
JCCP.RemainCmtdCost, 
JCCP.ProjPlug, 
JCCP.Mth, 
JCCI.BilledAmt BilledAmt1, 
JCCM.BilledAmt BilledAmt2, 
JCCM.udGEACrev, 
JCCP.Job, 
JCCM.Department, 
JCJM.ProjectMgr, 
JCMP.Name Name2 

FROM 
     Viewpoint.dbo.JCCP 
     INNER JOIN Viewpoint.dbo.HQCO ON JCCP.JCCo = HQCO.HQCo 
     INNER JOIN Viewpoint.dbo.JCCT ON JCCP.PhaseGroup = JCCT.PhaseGroup AND JCCP.CostType = JCCT.CostType 
     LEFT OUTER JOIN Viewpoint.dbo.JCCH ON JCCP.JCCo = JCCH.JCCo AND JCCP.Job = JCCH.Job 
     AND JCCP.PhaseGroup = JCCH.PhaseGroup AND JCCP.Phase = JCCH.Phase AND JCCP.CostType = JCCH.CostType 
     LEFT OUTER JOIN Viewpoint.dbo.JCJP ON JCCP.JCCo = JCJP.JCCo AND JCCP.Job = JCJP.Job 
     AND JCCP.PhaseGroup = JCJP.PhaseGroup AND JCCP.Phase = JCJP.Phase AND JCJP.JCCo = 1 
     LEFT OUTER JOIN Viewpoint.dbo.JCCI ON JCJP.JCCo = JCCI.JCCo AND JCJP.Contract = JCCI.Contract AND JCJP.Item = JCCI.Item 
     INNER JOIN Viewpoint.dbo.JCCM ON JCCI.JCCo = JCCM.JCCo AND JCCI.Contract = JCCM.Contract 
     INNER JOIN Viewpoint.dbo.JCJM ON JCCM.JCCo = JCJM.JCCo AND JCCM.Contract = JCJM.Job 
     LEFT OUTER JOIN Viewpoint.dbo.JCMP ON JCJM.JCCo = JCMP.JCCo AND JCJM.ProjectMgr = JCMP.ProjectMgr 

WHERE 
    JCCP.Mth < {ts '2017-04-02 00:00:00'} 
    AND JCJM.ProjectMgr = 8 
    AND JCCM.Department = '10' 
ORDER BY JCJP.Contract, JCJP.Item, JCJP.Phase, JCCP.CostType 
+0

有道理,但仍然是我的SQL Server報表生成器給我同樣的錯誤提示,這是工具: 未能進行創建查詢字段的列表。確保您可以連接到數據源和您的查詢語法是正確的。 「具有相同鍵的項已被添加」 –

+0

其實我想過使共同變量從 FROM JCJP這樣不同的表。爲T1 INNER JOIN JCCP爲T2 ON t2.Phase = t1.PrimaryKey INNER JOIN JCCI爲T3 ON t3.Description = t1時。 PrimaryKey AND ON t3.BilledAmt = t1.PrimaryKey INNER JOIN JCCM AS t4 ON t4.Description = t1.PrimaryKey AND ON t4.BilledAmt = t1.PrimaryKey –