--- шаг 1
---- === Создать таблицу SQL с SQL-запросом ниже
USE [abc]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[IC_Raw_In](
[I_Date] [varchar](50) NULL,
[I_O_P] [money] NULL,
[I_O_H] [money] NULL,
[I_O_L] [money] NULL,
[I_C_O] [money] NULL,
[I_Serial] [numeric](18, 0) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
--- шаг 2
- === Вставить данные в таблицу IC_Raw_In как массив ... Так как я получаю данные каждый раз, когда мне нужно, я должен использовать здесь массив данных
BULK
INSERT dbo.IC_Raw_In
FROM 'C:\ABC\InputData.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = ''
)
GO
--- шаг 3
--- ==== Создать представление SQL для AMPS12_C
USE [abc]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[AMPS12_C] AS
WITH RankedPrices
AS
(SELECT i_serial , I_C_O, ROW_NUMBER() OVER (ORDER BY i_serial) AS rn
FROM IC_Raw_In)
SELECT a.i_serial, AVG(b.I_C_O) AS AMPS12_C
FROM RankedPrices AS a LEFT JOIN
RankedPrices AS b ON b.rn BETWEEN a.rn-11 AND a.rn
GROUP BY a.i_serial
GO
--- шаг 4
--- === Создать представление как v_AMP_C для удобного вывода вывода
create view v_AMP_C as
SELECT dbo.IC_Raw_In.I_Date, dbo.IC_Raw_In.I_O_P, dbo.IC_Raw_In.I_O_H, dbo.IC_Raw_In.I_O_L, dbo.IC_Raw_In.I_C_O, dbo.AMPS12_C.AMPS12_C,
dbo.IC_Raw_In.I_Serial
FROM dbo.IC_Raw_In INNER JOIN
dbo.AMPS12_C ON dbo.IC_Raw_In.I_Serial = dbo.AMPS12_C.i_serial
--- ожидается шаг 5 (я ищу помощь здесь)
Теперь я хочу написать запрос SQL, чтобы получить результаты в новом столбце с именем C12WR для следующей очереди.
Я хочу исключить (использовать NULL) первые 11 строк в столбце C12WR, а в 12-й строке столбца C12WR "использовать статическое значение, которое находится в" AMPS12_C ". Это значение будет изменяться каждый раз, когда я импортирую данные в свой поэтому таблица будет динамически меняться каждый раз, а в столбце AMPS12_C она должна вычислять приведенную ниже формулу после 13-й строки до конца таблицы.
После 13-й строки в столбце C12WR = (значение вышеуказанной строки (то есть номер строки с текущим номером -1) из C12WR * 11 + Текущее значение строки из столбца I_C_O) / 12