Я создаю простую базу данных с данными, которые позволят мне (используя excel) проанализировать мой расход холодной воды, теплой воды, eletricity и т. Д. И взимать плату за них.Вычислительная колонка на основе другого вычисленного столбца в процедуре вставки
Я собираюсь использовать useforms в excel для вставки данных в базу данных, поэтому я создал процедуру SQL. Ниже приведен пример ввода данных для холодной воды.
Я перехожу к процедуре двух важных параметров: @Price и @Reading. В таблице [Холодная вода] У меня также есть столбцы: Потребление и стоимость.
Что я хочу сделать, это рассчитать сначала потребление для текущего месяца (как фактическое @Reading - предыдущее чтение). Затем, вычисляя текущее потребление, я хочу использовать это значение и рассчитать стоимость (текущее потребление * @Price).
Мне удалось вычислить текущее потребление и стоимость с помощью подзапроса. Но мне любопытно, может ли (и как это возможно) я могу напрямую использовать вычисленное значение, которое еще не было вставлено (текущее потребление), для вычисления другого (стоимости) внутри одной вставки вместо использования подзапроса.
Единственная идея, о которой я думал, это написать триггер, выполненный после этой вставки. Также я не знаю, как вставить первую строку в таблицу с помощью этой процедуры, а не вставлять первую строку вручную.
Буду признателен за любые советы.
@Date AS DATE,
@Reading AS DECIMAL (6,3),
@Price AS DECIMAL (6,2),
@Unit AS VARCHAR (5)
AS
BEGIN
SET NOCOUNT ON
-- Cold water
IF NOT EXISTS
(
SELECT Date
FROM [Cold water]
WHERE Date = @Date
)
BEGIN
INSERT INTO dbo.[Cold water]
(
Date,
Year,
Month,
Day,
Reading,
Consumption,
Unit,
Price,
Cost
)
VALUES
(
@Date,
(SELECT YEAR(@Date)),
(SELECT MONTH(@Date)),
(SELECT DAY(@Date)),
@Reading,
(SELECT
(@Reading - (SELECT Reading FROM [Cold water] WHERE ID = (SELECT MAX(ID) FROM [Cold water]))
)
),
@Unit,
@Price,
(SELECT @Price* (SELECT (@Reading - (SELECT Reading FROM [Cold water] WHERE ID = (SELECT MAX(ID) FROM [Cold water])
)
)
)
)
)
END
Какая СУБД для этого? Добавьте тег, чтобы указать, используете ли вы 'mysql',' postgresql', 'sql-server',' oracle' или 'db2' - или что-то еще. –
Я добавил - SQL Server. – kkris77