繁体   English   中英

在第13行动态之后和第12行静态值中的SQL查询帮助,并带有公式帮助。

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM