具有条件公式和分组的SQL查询

时间:2014-09-12 21:43:48

标签: sql conditional grouping

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

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

= IF([CycleUnit] =" P",1.0 / [CycleTime],IF([CycleUnit] =" M",[CycleTime] /60.0,IF([CycleUnit] ] =" H",[CycleTime],BLANK())))

我是SQL新手,非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

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

这样的事情:

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作为参数并返回转换后的值。

答案 1 :(得分:0)

案例陈述非常简单的时间

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;