SQL 包含左连接、Where 子句和 Sum() 的语句?

SQL Statement with Left Joins, Where Clause, and a Sum()?

我真的在为下面的问题而苦苦挣扎 SQL。我已经尝试了很多不同的东西,但我无法让它们工作。

我基本上需要做的是 LEFT OUTER JOIN 这个有效的 SQL 语句:

SELECT   "TABLE1"."Sheet Number",
         "TABLE1"."ID Number",
         "TABLE1"."Identification",
         "TABLE1"."Job Date",
         "TABLE1"."p2c",
         "TABLE2"."Range",
         "TABLE1"."bcr",
         "TABLE1"."Dataset ID",
         "TABLE1"."ACC",
         "TABLE1"."GNC",
         "TABLE1"."Year",
         "TABLE1"."Period",
         "TABLE1"."Week",
         "TABLE1"."Job_ID"
FROM     "DATABASE"."dbo"."TABLE2" "TABLE2" LEFT OUTER JOIN "DATABASE"."dbo"."TABLE1" "TABLE1"
         ON (((("TABLE2"."Contract"="TABLE1"."GNC")
         AND ("TABLE2"."FromPeriod"="TABLE1"."Period"))
         AND ("TABLE2"."FromWeek"="TABLE1"."Week"))
         AND ("TABLE2"."FromYear"="TABLE1"."Year"))
WHERE    "TABLE1"."ACC"='ACCOUNT57' 
         AND "TABLE1"."Dataset ID"=5 
         AND "TABLE1"."bcr"=1 
         AND "TABLE2"."Range"='Week'
ORDER BY "TABLE1"."Sheet Number"

这个:

SELECT  "SALES"."JobId",
        "SALES"."Total",
        SUM("SALES"."Total") AS JOBTOTAL
FROM   "DATABASE"."dbo"."SALES" "SALES"
GROUP BY "SALES"."JobId"
ON "SALES"."JobId"="TABLE1"."Job_ID"

但是,在尝试实施我在网上找到的解决方案时,其他连接给我带来了很多麻烦 confusion/frustration。我读到这可能是 WHERE 和 GROUP BY 语句不好用??

但我似乎无法获得我在网上找到的任何解决方案。我尝试过的一种解决方案看起来只是将 SQL 语句与括号内的 SUM() 和 GROUP BY(我的底部语句)包裹起来并加入其中?

有人能帮忙吗?

感谢您的宝贵时间。

SELECT
    t1.Sheet Number,
    t1.ID Number,
    t1.Identification,
    t1."Job Date",
    t1.p2c,
    t1."Range",
    t1.bcr,
    t1.Dataset ID,
    t1.ACC,
    t1.GNC,
    t1."Year",
    t1.Period,
    t1."Week",
    t1.Job_ID,
    SUM(s.Total) AS JOBTOTAL
FROM    
    dbo.TABLE1 t1
    LEFT JOIN dbo.Sales s
       ON t.Job_Id = s.Job_id
WHERE
    t1.ACC='ACCOUNT57' 
    AND t1.Dataset ID=5 
    AND t1.bcr=1 
    AND EXISTS (SELECT *
             FROM
                dbo.TABLE2 t2
             WHERE
                t1.GNC = t2.Contract
                AND t1.Period = t2.FromPeriod
                AND t1."Week" = t2.FromWeek
                AND t1."Year" = t2.FromYear
                AND t2."Range"='Week')
GROUP BY
    t1.Sheet Number,
    t1.ID Number,
    t1.Identification,
    t1."Job Date",
    t1.p2c,
    t1."Range",
    t1.bcr,
    t1.Dataset ID,
    t1.ACC,
    t1.GNC,
    t1."Year",
    t1.Period,
    t1."Week",
    t1.Job_ID
ORDER BY
    t1.Sheet Number

你也可以这样做:

SELECT DISTINCT
    t1.Sheet Number,
    t1.ID Number,
    t1.Identification,
    t1."Job Date",
    t1.p2c,
    t1."Range",
    t1.bcr,
    t1.Dataset ID,
    t1.ACC,
    t1.GNC,
    t1."Year",
    t1.Period,
    t1."Week",
    t1.Job_ID,
    s.JOBTOTAL
FROM    
    dbo.TABLE1 t1

    INNER JOIN dbo.TABLE2 t2
    ON t1.GNC = t2.Contract
    AND t1.Period = t2.FromPeriod
    AND t1."Week" = t2.FromWeek
    AND t1."Year" = t2.FromYear
    AND t2."Range"='Week'

    LEFT JOIN ( SELECT
                SUM(s.Total) AS JOBTOTAL
             FROM
                dbo.Sales s
             WHERE
                t.Job_Id = s.Job_id) s
WHERE
    t1.ACC='ACCOUNT57' 
    AND t1.Dataset ID=5 
    AND t1.bcr=1 
ORDER BY
    t1.Sheet Number