[英]SQL Query Help after 13th row Dynamic and in 12th row static values with a formula help pls.. posting DDL and DML
---步骤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 --- ====为AMPS12_C创建SQL视图
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)C12WR列的前11行,并在C12WR列的第12行中“使用位于“ AMPS12_C”中的静态值。每次我将数据导入到表中时,此值都会更改。每次都会动态变化,并且应该在AMPS12_C列的第13行到表末尾计算以下公式。
在C12WR列的第13行之后=(C12WR的上一行的值(当前行号-1)* 11 + I_C_O列的当前行值)/ 12
您可以通过将SQL查询存储在字符串(varchar或nvarchar)中,然后在其上运行exec()来创建动态SQL。
declare @sql as nvarchar(max) declare @id as int = 1
set @sql = 'select * from table where id =' + id
exec(@sql)
您只需要动态确定列名即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.