Difference between revisions of "Work stuff"

From Combobulate
(Created page with " use testdb go drop table if exists dbo.emp_values; create table dbo.emp_values ( id bigint identity, name nvarchar(255) not null, valu...")
 
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
use testdb
+
<pre>
 +
use testdb
 +
go
  
go
+
drop table if exists dbo.emp_values;
 +
drop view if exists dbo.current_emp_values;
  
drop table if exists dbo.emp_values;
+
create table dbo.emp_values
 +
(
 +
    id        bigint identity,
 +
    name      nvarchar(255) not null,
 +
    value      money        not null,
 +
    period int not null,
 +
    added_on  datetime2    not null default current_timestamp
 +
)
 +
go
  
create table dbo.emp_values
+
truncate table emp_values;
 +
insert into emp_values (name,value,period) values ('test1', 110, 1);
 +
/* WAITFOR DELAY '00:00:01'; */
 +
insert into emp_values (name,value,period) values ('test1', 120, 1);
 +
/* WAITFOR DELAY '00:00:01'; */
 +
insert into emp_values (name,value,period) values ('test2', 1111, 1);
 +
/* WAITFOR DELAY '00:00:01'; */
 +
insert into emp_values (name,value,period) values ('test4', 387.4, 1);
 +
/* WAITFOR DELAY '00:00:01'; */
  
(
+
insert into emp_values (name,value,period) values ('test1', 10, 2);
 +
/* WAITFOR DELAY '00:00:01'; */
 +
insert into emp_values (name,value,period) values ('test1', 20, 2);
 +
/* WAITFOR DELAY '00:00:01'; */
 +
insert into emp_values (name,value,period) values ('test2', 1, 2);
 +
/* WAITFOR DELAY '00:00:01'; */
 +
insert into emp_values (name,value,period) values ('test4', 87.4, 2);
 +
/* WAITFOR DELAY '00:00:01'; */
  
    id        bigint identity,
+
insert into emp_values (name,value,period) values ('test1', 180, 3);
 +
/* WAITFOR DELAY '00:00:01'; */
 +
insert into emp_values (name,value,period) values ('test1', 2880, 3);
 +
/* WAITFOR DELAY '00:00:01'; */
 +
insert into emp_values (name,value,period) values ('test2', 81, 3);
 +
/* WAITFOR DELAY '00:00:01'; */
 +
insert into emp_values (name,value,period) values ('test4', 88887.4, 3);
 +
/* WAITFOR DELAY '00:00:01'; */
  
    name       nvarchar(255) not null,
+
insert into emp_values (name,value,period) values ('test4', 88787.4, 1);
 +
/* WAITFOR DELAY '00:00:01'; */
 +
insert into emp_values (name,value,period) values ('test4', 8678787.4, 2);
 +
/* WAITFOR DELAY '00:00:01'; */
 +
insert into emp_values (name,value,period) values ('test2', 8, 2);
 +
/* WAITFOR DELAY '00:00:01'; */
 +
insert into emp_values (name,value,period,added_on) values ('test4', 867842435287.4, 2,DATEADD(day,1,CURRENT_TIMESTAMP));
  
    value      money        not null,
+
go
 +
create view current_emp_values as
 +
    SELECT a.* FROM emp_values a JOIN (SELECT name,max(id) as max_id,period FROM emp_values b GROUP BY name,period) b ON a.name = b.name AND a.id = b.max_id;
  
    period int not null,
+
go
  
    added_on  datetime2    not null default current_timestamp
+
select * from current_emp_values;
 +
go
  
)
+
select * from emp_values WHERE period = 2 order by name,added_on
 +
go
  
go
+
SELECT a.* FROM emp_values a JOIN (SELECT name,max(id) as max_id,period FROM emp_values b GROUP BY name,period) b ON a.name = b.name AND a.id = b.max_id
 +
WHERE a.period = 2;
 +
go;
  
truncate table emp_values;
+
SELECT a.* FROM emp_values a JOIN (SELECT name,max(id) as max_id,period FROM emp_values b WHERE b.added_on <= CURRENT_TIMESTAMP GROUP BY name,period) b ON a.name = b.name AND a.id = b.max_id
 +
WHERE a.period = 2;
 +
go;
  
insert into emp_values (name,value,period) values ('test1', 110, 1);
+
SELECT a.* FROM emp_values a JOIN (SELECT name,max(id) as max_id,period FROM emp_values b GROUP BY name,period) b ON a.name = b.name AND a.id = b.max_id
 +
WHERE a.period = 3;
 +
go;
  
insert into emp_values (name,value,period) values ('test1', 120, 1);
+
SELECT a.* FROM emp_values a JOIN (SELECT name,max(id) as max_id,period FROM emp_values b WHERE b.added_on <= CURRENT_TIMESTAMP GROUP BY name,period) b ON a.name = b.name AND a.id = b.max_id
 +
WHERE a.period = 3;
 +
go;
  
insert into emp_values (name,value,period) values ('test2', 1111, 1);
 
  
insert into emp_values (name,value,period) values ('test4', 387.4, 1);
+
</pre>
 
 
insert into emp_values (name,value,period) values ('test1', 10, 2);
 
 
 
insert into emp_values (name,value,period) values ('test1', 20, 2);
 
 
 
insert into emp_values (name,value,period) values ('test2', 1, 2);
 
 
 
insert into emp_values (name,value,period) values ('test4', 87.4, 2);
 
 
 
insert into emp_values (name,value,period) values ('test1', 180, 3);
 
 
 
insert into emp_values (name,value,period) values ('test1', 2880, 3);
 
 
 
insert into emp_values (name,value,period) values ('test2', 81, 3);
 
 
 
insert into emp_values (name,value,period) values ('test4', 88887.4, 3);
 
 
 
insert into emp_values (name,value,period) values ('test4', 88787.4, 1);
 
 
 
insert into emp_values (name,value,period) values ('test4', 8678787.4, 2);
 
 
 
insert into emp_values (name,value,period,added_on) values ('test4', 867842435287.4, 2,DATEADD(day,1,CURRENT_TIMESTAMP));
 
 
 
select * from emp_values
 
 
 
SELECT a.* FROM emp_values a JOIN (SELECT name,max(added_on)AS added_on,period FROM emp_values b GROUP BY name,period) b ON a.name = b.name AND a.added_on = b.added_on AND a.period=b.period
 
 
 
WHERE a.period = 2;
 
 
 
SELECT a.* FROM emp_values a JOIN (SELECT name,max(added_on)AS added_on,period FROM emp_values b WHERE b.added_on <= CURRENT_TIMESTAMP GROUP BY name,period) b ON a.name = b.name AND a.added_on = b.added_on AND a.period=b.period
 
 
 
WHERE a.period = 2;
 
 
 
SELECT a.* FROM emp_values a JOIN (SELECT name,max(added_on)AS added_on,period FROM emp_values b GROUP BY name,period) b ON a.name = b.name AND a.added_on = b.added_on AND a.period=b.period
 
 
 
WHERE a.period = 3;
 
 
 
SELECT a.* FROM emp_values a JOIN (SELECT name,max(added_on)AS added_on,period FROM emp_values b WHERE b.added_on <= CURRENT_TIMESTAMP GROUP BY name,period) b ON a.name = b.name AND a.added_on = b.added_on AND a.period=b.period
 
 
 
WHERE a.period = 3;
 

Latest revision as of 18:09, 8 September 2024

use testdb
go

drop table if exists dbo.emp_values;
drop view if exists dbo.current_emp_values;

create table dbo.emp_values
(
    id         bigint identity,
    name       nvarchar(255) not null,
    value      money         not null,
    period int not null,
    added_on   datetime2     not null default current_timestamp
)
go

truncate table emp_values;
insert into emp_values (name,value,period) values ('test1', 110, 1);
/* WAITFOR DELAY '00:00:01'; */
insert into emp_values (name,value,period) values ('test1', 120, 1);
/* WAITFOR DELAY '00:00:01'; */
insert into emp_values (name,value,period) values ('test2', 1111, 1);
/* WAITFOR DELAY '00:00:01'; */
insert into emp_values (name,value,period) values ('test4', 387.4, 1);
/* WAITFOR DELAY '00:00:01'; */

insert into emp_values (name,value,period) values ('test1', 10, 2);
/* WAITFOR DELAY '00:00:01'; */
insert into emp_values (name,value,period) values ('test1', 20, 2);
/* WAITFOR DELAY '00:00:01'; */
insert into emp_values (name,value,period) values ('test2', 1, 2);
/* WAITFOR DELAY '00:00:01'; */
insert into emp_values (name,value,period) values ('test4', 87.4, 2);
/* WAITFOR DELAY '00:00:01'; */

insert into emp_values (name,value,period) values ('test1', 180, 3);
/* WAITFOR DELAY '00:00:01'; */
insert into emp_values (name,value,period) values ('test1', 2880, 3);
/* WAITFOR DELAY '00:00:01'; */
insert into emp_values (name,value,period) values ('test2', 81, 3);
/* WAITFOR DELAY '00:00:01'; */
insert into emp_values (name,value,period) values ('test4', 88887.4, 3);
/* WAITFOR DELAY '00:00:01'; */

insert into emp_values (name,value,period) values ('test4', 88787.4, 1);
/* WAITFOR DELAY '00:00:01'; */
insert into emp_values (name,value,period) values ('test4', 8678787.4, 2);
/* WAITFOR DELAY '00:00:01'; */
insert into emp_values (name,value,period) values ('test2', 8, 2);
/* WAITFOR DELAY '00:00:01'; */
insert into emp_values (name,value,period,added_on) values ('test4', 867842435287.4, 2,DATEADD(day,1,CURRENT_TIMESTAMP));

go
create view current_emp_values as
    SELECT a.* FROM emp_values a JOIN (SELECT name,max(id) as max_id,period FROM emp_values b GROUP BY name,period) b ON a.name = b.name AND a.id = b.max_id;

go

select * from current_emp_values;
go

select * from emp_values WHERE period = 2 order by name,added_on
go

SELECT a.* FROM emp_values a JOIN (SELECT name,max(id) as max_id,period FROM emp_values b GROUP BY name,period) b ON a.name = b.name AND a.id = b.max_id
WHERE a.period = 2;
go;

SELECT a.* FROM emp_values a JOIN (SELECT name,max(id) as max_id,period FROM emp_values b WHERE b.added_on <= CURRENT_TIMESTAMP GROUP BY name,period) b ON a.name = b.name AND a.id = b.max_id
WHERE a.period = 2;
go;

SELECT a.* FROM emp_values a JOIN (SELECT name,max(id) as max_id,period FROM emp_values b GROUP BY name,period) b ON a.name = b.name AND a.id = b.max_id
WHERE a.period = 3;
go;

SELECT a.* FROM emp_values a JOIN (SELECT name,max(id) as max_id,period FROM emp_values b WHERE b.added_on <= CURRENT_TIMESTAMP GROUP BY name,period) b ON a.name = b.name AND a.id = b.max_id
WHERE a.period = 3;
go;