Это задание тоже относится к одной и той же теме, работы со скважинами
Поля таблицы следующие
- Код скважины (должен обязательно присутствовать в таблице описания скважины)
- Глубина (число до двух знаков после запятой, не может быть больше фактической глубины скважины из таблицы описания, проверять в триггере при вводе и редактировании)
- содержание Ni (null или 0.00001-100%, число до 5 знаков после запятой)
- содержание Cu (null или 0.00001-100%, число до 5 знаков после запятой)
- содержание Pt (null или 0.00001-100%, число до 5 знаков после запятой)
- содержание Pd (null или 0.00001-100%, число до 5 знаков после запятой)
Примечание. Первые два поля уникальны, т.е. для одной скважины может быть несколько глубин с разными результатами анализов. (предоставить скрипт создания таблицы, триггера и заполнения)
Решение задачи может выглядеть так.
GO
-- Создаем таблицу
CREATE TABLE [dbo].[ХимическиеАнализы](
[Код скважины] [nvarchar](20) NOT NULL,
[Глубина] [decimal](8, 2) NOT NULL,
[СодержаниеNI] [decimal](8, 5) NULL,
[СодержаниеCu] [decimal](8, 5) NULL,
[СодержаниеPt] [decimal](8, 5) NULL,
[СодержаниеPd] [decimal](8, 5) NULL,
CONSTRAINT [PK_ХимическиеАнализы] PRIMARY KEY CLUSTERED
(
[Код скважины] ASC,
[Глубина] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TRIGGER [dbo].[ХимическиеАнализы_INS_UPD]
ON [dbo].[ХимическиеАнализы]
FOR INSERT, UPDATE
AS
BEGIN
UPDATE [dbo].[ХимическиеАнализы]
SET
[СодержаниеNI] = 1.0,
[СодержаниеCu] = 1.2,
[СодержаниеPt] = 3.2,
[СодержаниеPd] = 1.2,
[Глубина] = 200
FROM [ХимическиеАнализы] s
INNER JOIN Inserted i
ON s.[Код скважины] = i.[Код скважины] AND s.[Глубина] = i.Глубина
END
GO
На заключительном этапе необходимо заполнить таблицу данными.
GO
-- Заполняем ее данными
INSERT INTO [ХимическиеАнализы] ([Код скважины], [Глубина], [СодержаниеNI], [СодержаниеCu], [СодержаниеPt], [СодержаниеPd])
VALUES
('ББ-0005A',930.0,70.0,20.0,10.0,0.005)
,('ББ-0005A',920.0,0.007,1.0,2.0,15.0)
,('ББ-0005A',910.0,4.0,0.58,0.21,90.0)
,('ББ-0005A',900.0,32.0,21.0,0.5,0.235)
,('ББ-0005A',850.0,25.01,12.05,18.06,10.0)
,('ББ-0005A',800.0,85.01,17.05,17.06,14.0)
,('ББ-0005A',750.0,86.01,15.05,17.06,14.0)
,('ББ-0005A',700.0,82.01,12.05,17.06,14.0)
GO
Полное решение дано по этой ссылке Набор квалификационных решений SQL Server