首页 > 解决方案 > 根据 SQL Server 存储过程中的输入动态计算参数

问题描述

我需要编写一个 SQL Server 存储过程,其中根据用户给出的输入日期,需要动态计算数据。

为了详细解释,我需要在数据库中找到从月初到输入日期记录的权重总和。

每天每班的数据将记录在数据库中。

一天由 3 个班次组成。所以班次数将是 3*30=90(一个月 30 天)。

这就是棘手的地方。我的查询需要这样,班次数应根据输入日期动态计算。

例如,如果输入日期为 20,则班次数将为 3*20=60(从当月的第一天到输入日期)。

该班次数将用于计算该月记录的总平均重量。

[Sum of weights from 1st day till input day] 
      / [no. of shifts from first day of month till input day]

我正在提供与此问题相关的部分存储过程。我可以找到从开始日期到输入日期的天数,但我无法根据输入日期计算班次数。

    @Reportdate DATETIME,

SELECT 
    PartName,
    (SUM((COALESCE(weightActualPerCent, 0))) / 'total shifts') AS 'OverWeight%'
FROM 
    table1
WHERE 
    Process = 'Cooling'
    AND Day >= DATEADD(MONTH, DATEDIFF(MONTH, 0, @Reportdate), 0) 
    AND Day < @Reportdate;

在上面的代码中,分母“总班次”应该根据开始日期和输入日期之间的天数动态计算。任何建议/指针将不胜感激。

如果问题太冗长或令人困惑,我们深表歉意。

标签: sqlsql-server-2008stored-procedures

解决方案


推荐阅读