2017-05-29 10 views
0

私のクエリは全く機能していませんが、何が間違っているのかを確認するためには動作していますが、それを見つけることはできません。Microsoft SQLサーバーのデータベースのSQLクエリ

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" 

あなたはすべてのテーブルと値を見ることができるように関連しており、内側と外側と結合補完するために参加する:同じですが、正直なところ、私は私のコードを読み証拠に私の最善を尽くしています2つの値は持っていても、その言いますテーブル。レポート用です

+0

を、あなたが取得しているエラーメッセージは何ですか。ここに貼り付けられますか? –

+0

クエリのフィールドのリストを作成できませんでした。データソースに接続でき、クエリの構文が正しいことを確認します。 "同じキーを持つアイテムがすでに追加されています –

+0

Hm ...どのツールを使用していますか –

答えて

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

実際、私は共通変数を作成することを考えましたこのような異なるテーブルから。 JCJP FROM T1 ように、内側はt2.Phase = t1.PrimaryKey INNER ON T2 AS JCCPをJOIN t3.Description = T1 ON T3 AS JCCIをJOIN。 PrimaryKey AND ON t3.BilledAmt = t1.PrimaryKey INNER JOIN JCCM AS t4 ON t4.Description = t1.PrimaryKey AND ON t4.BilledAmt = t1.PrimaryKey –

関連する問題