如何使用聚合执行SQL组?

时间:2017-01-31 02:17:13

标签: sql-server subquery aggregate-functions

我有一对链接表,第一个包含作业信息,第二个包含材料信息(每个作业有1-10个材料)。我也加入了其他几张桌子(包括客户信息和其他工作信息)。我想在同一个工作中得到相同类型的所有材料的总和。因此,作业78100有三个相同材料的条目,数量为800,800和900.我希望决赛桌说“78100等...... 2500。”

我使用以下代码获得了我想要的结果,但我还需要材料名称,该名称位于另一个仅与CJF连接的表中。

SELECT
    OJ.JobN, C.CustomerName, OJ.JobDescription, OJ.Quantity, 
    OJ.JobCloseDate, CJ.FSC, 
    (SELECT SUM(CJF.MT_NETSHEETS)
     FROM CT_JobForm CJF
     WHERE CJF.JobN = OJ.JobN)
FROM 
    OpenJob OJ 
JOIN 
    Customer C ON OJ.CustomerN = C.CustomerN
JOIN 
    CT_Job2 CJ ON OJ.JobN = CJ.JobN
WHERE 
    JobDescription LIKE '%FSC%'
    AND JobCloseDate BETWEEN '01-01-2016' AND '12-31-2016'
ORDER BY 
    OJ.JobN ASC

我可以使用此代码获取材质名称,但这样做会导致丢失分组(新代码在双星号内)。

SELECT 
    OJ.JobN, C.CustomerName, OJ.JobDescription, OJ.Quantity, 
    OJ.JobCloseDate, CJ.FSC, 
    (SELECT SUM(CJF.MT_NETSHEETS)
     FROM CT_JobForm CJF
     WHERE CJF.JobN = OJ.JobN),
    **(SELECT MCC.MCCDescription
     FROM MatlCostCntr MCC
     WHERE CJF.MCCN = MCC.MCCN)**
FROM 
    OpenJob OJ 
JOIN 
    Customer C ON OJ.CustomerN = C.CustomerN
JOIN 
    CT_Job2 CJ ON OJ.JobN = CJ.JobN
**JOIN 
    CT_JobForm CJF ON CJF.JobN = OJ.JobN**
WHERE 
    JobDescription LIKE '%FSC%'
    AND JobCloseDate BETWEEN '01-01-2016' AND '12-31-2016'
ORDER BY 
    OJ.JobN ASC

我尝试在网表中嵌套MCCN Select语句,但根本无法完成。有没有办法做到这一点,而不仅仅是在Excel中手动修复它?

0 个答案:

没有答案