我正在使用通过Microsoft PowerApps调用的存储过程将生产订单插入SQL Server数据库。当前,“构建日期”列仅使用今天的日期作为构建日期。以下是记录示例:
您可以看到,所有这10个订单都以今天的日期作为设置的生成日期。但是,我想根据当天的必要输出动态设置此构建日期。这很可能将变量传递给存储过程。例如,如果构建输出为每天5个,则第1-5行的构建日期为'02 / 17/2020',而接下来的5行的构建日期为'02 / 18/2020'。
这很简单,因为构建输出可将订单数整除。但是,假设构建输出为3而不是5。前三个订单为'02 / 17/2020',接下来的三个订单为'02 / 18/2020',接下来的三个订单为'02 / 19 / 2020'。这将使一个订单设置为“ 02/20/2020”。然后,如果我添加了更多订单,它将在每个日期堆叠起来,最多填充3个。是否可以通过存储过程来执行此操作?
您可能需要进行一些调整,但是根据我的理解,这可以解决问题([Date]是上面示例表中的日期列:]
CREATE PROC yourProcName @pNUM AS INT = 1 --PARAMETER
AS
(
DECLARE @pDate DATE = CONVERT(DATE, GETDATE());
SET @pDate = (SELECT TOP 1 CONVERT(DATE, MAX([Date])) FROM yourDestTable);
DECLARE @pLead INT = (SELECT TOP 1 COUNT(*) FROM yourDestTable WHERE [Date] = @pDate;
WITH cte
AS
(
SELECT *,
FLOOR((
ROW_NUMBER() OVER(ORDER BY @pDate) -
0.001)/@pNUM) AS RN
FROM yourSourceTable
)
INSERT INTO yourDestTable
SELECT
C.*,
DATEADD(DAY, LEAD(C.RN, @pLead), @pDate) AS [Date]
INTO yourDestTable
FROM cte AS C
)
然后像这样EXEC yourProcName <number of transactionsday>
称呼它>