Это мое первое сообщение в этом форуме, и я очень новичок в SQL, поэтому, пожалуйста, несите меня.Добавление дополнительных критериев для правильного присоединения
Я пытаюсь изменить какой-либо существующий скрипт, чтобы внести небольшое изменение в отчет, чтобы сделать его немного более подходящим для цели (оригинал был составлен разработчиком).
В этом отчете рассматривается, были ли два конкретных файла зачитаны в базу данных для трех сущностей каждый месяц или отсутствуют ли они.
Результат выглядит любит ниже:
File A
YYYY:MM:DD A MISSING
B MISSING
C MISSING
YYYY:MM:DD A Present
B MISSING
C Present
Сценарий таков, что только в текущем году файлы ищутся за исключением файлов для декабря предыдущего года, однако я хочу также отобразить результаты за октябрь и ноябрь за предыдущий год.
Ниже приводится соответствующая часть сценария:
select distinct(k.filedate) as filedate, k.fid, case when r.fundid is null then 0 else 1 end as present
from XXXX database
right join
(
select convert(date,convert(varchar, year(@ReportDate) - 1) + '-12-01') as filedate, g.fid
from (
select 'XXXXFDGBP10' as fid
union
select 'XXXXUSD10' as fid
union
select 'XXXXUSD10' as fid
union
select 'XXXXA10' as fid
union
select 'XXXXB10' as fid
union
select 'XXXXGBPMGMT10' as fid
union
select 'XXXXMGMTSH10' as fid
) g
union
select convert(date,convert(varchar, year(@ReportDate)) + '-' + convert(varchar, h.m) + '-01') as filedate, s.fid
from (
select 'XXXXFDGBP10' as fid
union
select 'XXXXUSD10' as fid
union
select 'XXXXUSD10' as fid
union
select 'XXXXA10' as fid
union
select 'XXXXB10' as fid
union
select 'XXXXGBPMGMT10' as fid
union
select 'XXXXMGMTSH10' as fid
) s,
(
select 1 as m
union
select 2 as m
union
select 3 as m
union
select 4 as m
union
select 5 as m
union
select 6 as m
union
select 7 as m
union
select 8 as m
union
select 9 as m
union
select 10 as m
union
select 11 as m
union
select 12 as m
) h
) k
on r.fundid = k.fid and r.filedate = k.filedate
where
k.filedate >= convert(date,convert(varchar, year(@ReportDate) - 1) + '-12-01')
and k.filedate <= @ReportDate
Так что я хочу, чтобы добавить '11 -01' и '10 -01' до 2016 года возвращения доклада. Кто-нибудь знает, как я могу это сделать?
Заранее спасибо. Пожалуйста, дайте мне знать, если это не ясно или у кого есть какие-либо вопросы.
Вы можете не просто изменить 12 на 10? Таким образом, он будет делать два дополнительных месяца каждый раз. – BishNaboB
Извинения за поздний ответ на это предложение. К сожалению, это показывает только дату 2016-10, а не 2016-10 и 2016-11 и 2016-12, поэтому не работает. – idontknowwhatiamdoing