Я пытаюсь выработать тренд для таблицы SQL, которая содержит записи для файлов, входящих в папки файловой системы в течение заданного периода времени.У меня есть таблица с периодами дат, а другая - со всеми интересующими меня папками. Когда я присоединяюсь (справа наружу), я получаю таблицу, подобную приведенной ниже:
Jan 2012, folder A 2
Jan 2012, folder B 4
Feb 2012, folder A 2
Feb 2012, folder B 2
Однако, если нетинформация была введена для интервала дат. Я просто получаю значения NULL, поэтому март 2012 г., NULL, NULL
Можно ли как-нибудь добавить ноль в эту таблицу для каждой папки?Это дало бы мне:
Jan 2012, folder A 2
Jan 2012, folder B 4
Feb 2012, folder A 2
Feb 2012, folder B 2
Mar 2012, folder A 0
Mar 2012, folder B 0
Затем мне нужно выработать тренд по месяцам для каждой папки, чтобы разница между январем и февралем для папки A составляла от 0 до -200% между февралем и мартом.Это даст мне окончательную таблицу:
Jan 2012, folder A 2 0 (first month no data)
Jan 2012, folder B 4 0 (first month no data)
Feb 2012, folder A 2 200% (increase on Jan)
Feb 2012, folder B 2 -50% (decrease on Jan)
Mar 2012, folder A 0 -200% (decrease on Feb)
Mar 2012, folder B 0 -200% (decrease on Feb)
Это в конечном итоге окажется в отчете ssrs, поэтому не имеет значения, происходит ли изменение в запросе или через построитель отчетов.
Любая помощь с этим будет принята с благодарностью.
Мои схемы таблиц выглядят так:
Таблица папок:
DECLARE @folders TABLE ( folderId int, folderPath varchar(500))
Таблица файлов:
DECLARE @filessAdded TABLE
( fileId int,
parentId int,
folderPath varchar(500),
eventDate DATETIME,
folderId int );
Таблица дат - заполняется динамически на основе интервалов дат в данном периоде, например, месяцев:
DECLARE @dates TABLE ( DateOf VARCHAR(500) );
Мой последний запрос выглядит следующим образом:
select isnull(Total,0),
folder,
dates.DateOf,
trend
from @filesAdded as files
right join @dates as dates on files.DateOf = dates.DateOf