Справка по SQL-запросам после 13-й строки Динамические и в 12-й строке статические значения с формулой help pls .. отправка DDL и DML - PullRequest
0 голосов
/ 18 марта 2011

--- шаг 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

1 Ответ

0 голосов
/ 22 августа 2011

Вы можете создать динамический SQL, сохранив SQL-запрос в строке (varchar или nvarchar), а затем запустив в нем exec ().

declare @sql as nvarchar(max) declare @id as int = 1</p> <p>set @sql = 'select * from table where id =' + id</p> <p>exec(@sql)

Вам просто нужно динамически определить имена столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...