1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
-- Histoire de pas mettre le boxon dans votre base, on crée un nouveau schema
create schema massigne;
go
-- La table de releve : on note la présence d'une colonne calculée pour le coefficient : plus propre que de stocker la donnée calculée
create table massigne.releve
(
jour date primary key,
pleine int not null,
creuse int not null,
check (creuse > 0),
coefficient as cast(pleine as float) / cast(creuse as float)
);
go
-- La vue de travail : c'est cette vue qui doit être utilise dans le programme VB.NET
create view massigne.v_comptages (jour, pleine, creuse, coefficient)
as
select jour, pleine, creuse, coefficient
from massigne.releve
where jour >= cast(case when day(getdate()) >= 26 then dateadd(day, 26 - day(getdate()), getdate()) else dateadd(month, -1, dateadd(day, 26 - day(getdate()), getdate())) end as date)
go
-- On insère quelques données pour illustrer le fonctionnement
insert into massigne.releve (jour, pleine, creuse) values
('2017-05-01', 1, 1),
('2017-05-02', 10, 20),
('2017-05-03', 30, 30),
('2017-05-04', 50, 60),
('2017-05-05', 60, 80),
('2017-05-06', 75, 100),
('2017-05-07', 85, 130),
('2017-05-08', 100, 135),
('2017-05-09', 115, 140),
('2017-05-10', 130, 160),
('2017-05-11', 140, 170),
('2017-05-12', 150, 210),
('2017-05-13', 160, 220),
('2017-05-14', 180, 225),
('2017-05-15', 210, 240),
('2017-05-16', 215, 260),
('2017-05-17', 230, 290),
('2017-05-18', 250, 300),
('2017-05-19', 245, 305),
('2017-05-20', 255, 305),
('2017-05-21', 280, 315),
('2017-05-22', 305, 340),
('2017-05-23', 310, 360),
('2017-05-24', 320, 380),
('2017-05-25', 330, 430),
('2017-05-26', 350, 440),
('2017-05-27', 375, 450),
('2017-05-28', 390, 460),
('2017-05-29', 400, 475),
('2017-05-30', 420, 480),
('2017-05-31', 425, 505);
-- On vérifie que toutes les données sont bien là
select * from massigne.releve;
-- La vue n'affiche les lignes qu'à partir du 26 mai 2017
select * from massigne.v_comptages;
-- On insère une ligne directement dans la vue (et ça marche !)
insert into massigne.v_comptages (jour, pleine, creuse) values ('2017-06-01', 440, 530);
-- On vérifie que la vue affiche bien la nouvelle ligne (elle est aussi, bien évidement, présente dans la table massigne.releve)
select * from massigne.v_comptages; |
Partager