У меня есть несколько таблиц, которые используются для регистрации активности пользователя для приложения. Таблицы выглядят примерно так (псевдокод из памяти, может быть синтаксически неправильным):
create table activity (
sessionid uniqueidentifier not null,
created smalldatetime not null default getutcdate()
);
create table activity_details (
sessionid uniqueidentifier not null,
activity_description varchar(100) not null,
created smalldatetime not null default getutcdate()
);
Моя цель - заполнить сводную таблицу для целей отчетности, которая выглядит примерно так:
create table activity_summary (
sessionid uniqueidentifier not null,
first_activity_desc varchar(100) not null,
last_activity_desc varchar(100) not null
);
Первое и последнее описания деятельности будут определены в хронологическом порядке. Моя первоначальная мысль состоит в том, чтобы обновить сводную таблицу следующим образом:
truncate table activity_summary;
insert into activity_summary (sessionid)
select sessionid from activity;
update table activity_summary set
first_activity_desc = (select top 1 activity_desc from activity_detail where sessionid = as.sessionid order by created asc),
last_activity_summary = (select top 1 activity_desc from activity_detail where sessionid = as.sessionid order by created desc)
from activity_summary as;
Однако это кажется невероятно многословным и ненужным для меня. Я просто не уверен, как уменьшить это. У меня такое чувство, что я могу как-то все это сделать в операторе вставки, но я в тупике. Какие-либо предложения?