2017-05-29 187 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 –