【问题标题】:SQL Query With Conditional Formulas and Grouping使用条件公式和分组的 SQL 查询
【发布时间】:2014-09-12 21:43:47
【问题描述】:

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

这是我在 PowerPivot 中用来转换为小时数的公式。

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

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

【问题讨论】:

  • 添加你的数据库标签
  • 你的后端是什么数据库系统?

标签: sql conditional grouping


【解决方案1】:

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

这样的事情怎么样:

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

【讨论】:

    【解决方案2】:

    案例陈述的时间非常简单

    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;
    

    【讨论】:

      猜你喜欢
      • 2018-12-20
      • 2015-08-14
      • 2016-10-05
      • 1970-01-01
      • 2023-01-25
      • 1970-01-01
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多