在 SQL Server 中基于 Job ID 合并行


SQL

使用 SQL Server 的新手。我有一个查询,它提取了我们对一组客户端进行分析所需的所有信息,但根据系统的设置方式,它目前需要在 excel 中手动清理,然后数据才变得有用。

有些作业 ID 以 S 结尾,但是当我们进行分析时,我们将作业 ID 视为一个整体,并且必须在 excel 中花费大量时间手动将数据组合在一起。

示例查询结果

JOB ID   LABOR EXPENSE  DIRECT MATERIAL
10067    400395.29      96614.25
10067S   143668         44148.22
10068    545100.79      127143.64
10068S   147009.89      33506.31

我想做的是,当查询运行时,将Job ID中带有 S 的行合并到没有的行中,这样我们只为每个作业获得一行数据。

Job ID  LABOR EXPENSE   DIRECT MATERIAL
10067   544063.29       140762.47
10068   692110.68       160649.95

有没有人对如何更改查询以完成此操作有任何想法?

试试这个:

select replace( Job_Id, 'S', '' ) as "JOB ID",
       sum (LABOR_EXPENSE) as "LABOR EXPENSE",
       sum (DIRECT_MATERIAL) as "DIRECT MATERIAL"
  from yourTable
group by replace( Job_Id, 'S', '' )
order by replace( Job_Id, 'S', '' ) 

请记住相应地更改列,因为它可能没有用空格定义,甚至不像我建议的下划线那样。

有效的主题变体(如果您的 id 值与一致数字长度的数字一致)是使用子字符串:

SELECT SUBSTRING(job_id,1,5) AS job_no, 
SUM(labor_exp) AS tot_lab,
SUM(direct_mat) AS tot_mat
FROM jobs
GROUP BY SUBSTRING(job_id,1,5)

SQLFiddle: http://sqlfiddle.com/#!9/72838/16

相关内容

  • 没有找到相关文章

最新更新