Sql 如何将多个作业成本数据汇总到一个合同中?

Sql 如何将多个作业成本数据汇总到一个合同中?,sql,reporting-services,Sql,Reporting Services,我从多个表中提取数据以创建一个报告,该报告提供了所有合同的列表,其中包括最近的发票日期、最近的作业成本日期、总成本金额和总账单金额 我的表格如下: 合同详细信息,我在其中提取合同编号、部门、状态、合同金额、账单金额 我提取最后发票日期的AP发票 作业成本,其中我提取作业编号、总成本和上次作业成本日期 连接合同详细信息和作业成本的作业详细信息 我的查询当前编写如下所示。我遇到的问题是工作成本。一个合同可以分配多个作业,因此我的数据集返回多个结果(见下图)。我不知道如何将我的查询或SSRS报告设

我从多个表中提取数据以创建一个报告,该报告提供了所有合同的列表,其中包括最近的发票日期、最近的作业成本日期、总成本金额和总账单金额

我的表格如下:

  • 合同详细信息,我在其中提取合同编号、部门、状态、合同金额、账单金额
  • 我提取最后发票日期的AP发票
  • 作业成本,其中我提取作业编号、总成本和上次作业成本日期
  • 连接合同详细信息和作业成本的作业详细信息
我的查询当前编写如下所示。我遇到的问题是工作成本。一个合同可以分配多个作业,因此我的数据集返回多个结果(见下图)。我不知道如何将我的查询或SSRS报告设置为仅按合同项显示详细信息(每个合同一行)

试一试:

  SELECT
  Contract,
  Department,
  ContractDescription,
  ContractStatus,
  ContractAmt,
  Max(RecentInvoice) AS RecentInvoice,
  Max(RecentJobCost) AS RecentJobCost,
  Sum(BilledAmt)   AS TotalBilledAmt
FROM   (SELECT
          c.Contract,
          c.Department,
          c.Contract + ' ' + c.Description AS ContractDescription,
          c.ContractStatus,
          c.ContractAmt,
          c.BilledAmt,
          (SELECT             Max(ap.Mth)           FROM   APInvoice ap WHERE  j.JCCo = ap.JCCo AND j.Job = ap.Job)      AS RecentInvoice,
          (SELECT             Max(jc.Mth)           FROM   JobCost jc   WHERE  j.JCCo = jc.JCCo AND j.Job = jc.Job)      AS RecentJobCost,
          (SELECT             Sum(jc.ActualCost)    FROM   JobCost jc   WHERE  j.JCCo = jc.JCCo AND j.Job = jc.Job)      AS ActualCost,
          (SELECT DISTINCT             jc.Job       FROM   JobCost jc   WHERE  j.JCCo = jc.JCCo AND j.Job = jc.Job)      AS JobNumber,
          c.udProjFolderRecd,
          c.udBillStatus
        FROM   ContractDetails c
               LEFT JOIN JobDetails j   ON j.JCCo = c.JCCo  AND j.Contract = c.Contract
        WHERE  c.JCCo = ( @Company )
               AND c.ContractStatus IN ( @ContractStatus )
               AND c.Department IN ( @Department )) contractsummary
GROUP  BY Contract,
          Department,
          ContractDescription,
          ContractStatus,
          ContractAmt 

如果希望每行显示1个合同,您希望如何合并无法求和的列?例如作业编号、上次作业成本等@88-作业编号可以删除。我现在只有它在那里作为参考,以了解数据。对于上次发票和上次作业成本,我希望所有作业的最新日期。
  SELECT
  Contract,
  Department,
  ContractDescription,
  ContractStatus,
  ContractAmt,
  Max(RecentInvoice) AS RecentInvoice,
  Max(RecentJobCost) AS RecentJobCost,
  Sum(BilledAmt)   AS TotalBilledAmt
FROM   (SELECT
          c.Contract,
          c.Department,
          c.Contract + ' ' + c.Description AS ContractDescription,
          c.ContractStatus,
          c.ContractAmt,
          c.BilledAmt,
          (SELECT             Max(ap.Mth)           FROM   APInvoice ap WHERE  j.JCCo = ap.JCCo AND j.Job = ap.Job)      AS RecentInvoice,
          (SELECT             Max(jc.Mth)           FROM   JobCost jc   WHERE  j.JCCo = jc.JCCo AND j.Job = jc.Job)      AS RecentJobCost,
          (SELECT             Sum(jc.ActualCost)    FROM   JobCost jc   WHERE  j.JCCo = jc.JCCo AND j.Job = jc.Job)      AS ActualCost,
          (SELECT DISTINCT             jc.Job       FROM   JobCost jc   WHERE  j.JCCo = jc.JCCo AND j.Job = jc.Job)      AS JobNumber,
          c.udProjFolderRecd,
          c.udBillStatus
        FROM   ContractDetails c
               LEFT JOIN JobDetails j   ON j.JCCo = c.JCCo  AND j.Contract = c.Contract
        WHERE  c.JCCo = ( @Company )
               AND c.ContractStatus IN ( @ContractStatus )
               AND c.Department IN ( @Department )) contractsummary
GROUP  BY Contract,
          Department,
          ContractDescription,
          ContractStatus,
          ContractAmt