在T-SQL连接查询中将列相乘

时间:2017-05-26 18:11:00

标签: sql-server tsql calculation

我正在使用SQL Server 2008.我正在尝试构建一个T-SQL查询,以根据来自多个表的数据计算一些性能指标。不幸的是,我坚持其中一项计算,无法弄清楚出了什么问题。我非常感谢任何帮助:

  1. 计算需要生成的总数(来自表格$.ajax({ // ... skipped ... success:function(response, text){ if(response.users !== undefined){ dataSet1 = response.users; } // table confirgurations var tableConfig={ // ... skippped ... destroy: true }; // ... skippped ... var userTable=$('#table-id').DataTable(tableConfig); } }); ),废品总数(来自表格ShiftHourCounts)和总停机时间(来自ShiftReportScrap查询)< / p>

  2. 我试图在查询中添加每个操作/计算主要是为了我自己的教育/疑难解答

  3. 我不明白为什么列Q返回零。 Q = Tok / Tp,查询正确返回并分别计算Tok和Tp。在下面的例子中,Q应该= 0.994

  4. 查询当前返回除Q,A,P和OEE之外的所有值的正确值。 Q,A,P和OEE始终返回零

  5. 当前查询:

    Downtime

    sample data and result

1 个答案:

答案 0 :(得分:1)

最有可能来自整数除法。试试这个:

((isnull(p.TotalProduced+.0,0.0)-isnull(s.Scrap+.0,0.0))
/nullif(p.TotalProduced,0)) AS Q, --Q= Tok/Tp

添加.0或乘以1.0会将整数转换为decimal类型。

除以整数将返回一个整数类型,如果该值小于1,它将返回0,因为它会截断而不是舍入或使用其他逻辑返回整数。