带条件公式和分组的SQL查询

带条件公式和分组的SQL查询,sql,conditional,grouping,Sql,Conditional,Grouping,我在ERP中有一个表,其中包含我们制造的产品的工艺路线(称为工艺路线)。每个产品都有独特的工艺步骤,其中包含完成单个装置所需的设置时间和周期时间等信息。我需要做的是返回一个按零件号分组的表,该表显示给定零件号的总循环小时数。如果表中的单位已经以小时为单位,这将不是问题。不幸/幸运的是,我们的ERP允许在许多不同的单位中指定周期时间。当然,这个单位在表中是可用的,但我正在努力编写一个查询,该查询将首先从(在大多数情况下)每小时零件数转换为每零件小时数,然后对每个路由步骤的结果求和,并返回按零件号分

我在ERP中有一个表,其中包含我们制造的产品的工艺路线(称为工艺路线)。每个产品都有独特的工艺步骤,其中包含完成单个装置所需的设置时间和周期时间等信息。我需要做的是返回一个按零件号分组的表,该表显示给定零件号的总循环小时数。如果表中的单位已经以小时为单位,这将不是问题。不幸/幸运的是,我们的ERP允许在许多不同的单位中指定周期时间。当然,这个单位在表中是可用的,但我正在努力编写一个查询,该查询将首先从(在大多数情况下)每小时零件数转换为每零件小时数,然后对每个路由步骤的结果求和,并返回按零件号分组的数据。我在格式化表格时遇到问题,而且我的声誉不足以添加图像,因此无法显示数据的外观

以下是我在PowerPivot中使用的转换为小时的公式

=如果([CycleUnit]=“p”,1.0/[CycleTime],如果([CycleUnit]=“M”,[CycleTime]/60.0,如果([CycleUnit]=“H”,[CycleTime],BLANK()))


我是SQL新手,非常感谢您的帮助。

正如其他人所提到的,了解您的数据库系统会很有帮助

像这样的东西怎么样:

select sum( case cycleUnit
            when 'P' then 1.0/cycleTime
            when 'M' then cycleTime/60.0
            when 'H' then cycleTime
            end
            ) as cycleHours
from Routing
group by partNumber

case语句处理您的转换。或者,您可以尝试创建一个标量函数,该函数接受cycleTime和unit作为参数,并返回转换后的值。

对于case语句来说,这是非常简单的时间

select 
 part_no,
 sum(case cycle_unit
   when 'P' then 1.0/cycle_time
   when 'M' then cycle_time/60
   when 'H' then cycle_time
 end) as work_hours      
from routing
group by part_no;

添加数据库标记后端是什么数据库系统?