sql - 在 SQL Server 中根据作业 ID 组合行

标签 sql sql-server

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

有些 Job ID 以 S 结尾,但当我们进行分析时,我们将 Job 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 的行合并到没有 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', '' ) 

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

关于sql - 在 SQL Server 中根据作业 ID 组合行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35281277/

相关文章:

php - 在 Linux 上从 PHP 连接到 MS SQL Server

sql-server - SQL Server Management Studio 修改脚本 (2005)

c# - 将 Unicode 字符串从 C# 发送到 SQL Server 2008 数据库

sql - 将数据库初始化为全局变量

sql - Rails 3/SQL-一个复杂的“存在吗?”询问

sql - 将格式为 yyyymmddhhnn 的字符串转换为日期时间

java - CentOS 7 上的 TomEE 在 CentOS 更新后无法通过 JDBC 连接到 Microsoft SQL Server

SQL Group By 并分配最高值

sql - 参数化 SQL 中的子查询

SQL Server - 执行直接查询与使用 sp_executesql 执行