#sql
#sql
Вопрос:
У меня есть три таблицы: VolunteerRelationships, Organizations и CampaignDates. Я пытаюсь написать запрос, который даст мне идентификатор и название организации, а также даты начала и окончания кампании организации для текущего года кампании <@CampaignYear> на основе выбранного добровольца <@SelectedInd>.
Даты хранятся в виде отдельных значений столбцов для дня, месяца и года, которые я пытаюсь преобразовать в более отформатированное значение даты. Если я смогу это получить, я также хотел бы использовать оператор case, чтобы получить статус кампании на основе того, являются ли даты кампании предстоящими, запущенными в данный момент или уже закрытыми, но сначала нужно получить первую часть запроса.
Извините, если я упускаю много необходимой информации, но я впервые публикую вопрос на этом форуме. Спасибо!
VolunteerRelationships
id | name | managesId |expiryDate
1 | john | 1 |
2 | jack | 2 |6/30/2020
3 | jerry| 3 |12/31/2021
Organizations
id | name1
1 | ACME
CampaignDates
orgId | dateDay | dateMonth | dateYear | dateType | Campaign Year
1 | 5 | 11 | 2020 | Start | 2020
1 | 15 | 11 | 2020 | End | 2020
Result
orgId | orgName | startDate | endDate | Status
1 | ACME | 2020-01-01| 2020-01-15 | Closed
select
v.MANAGEDACCOUNT,
o.Name1,
select * from
(select cast(cast dateyear*1000 datemonth*100 dateday as varchar(255)) as date as date1 from <@Schema>.CampaignDates where datetype = 'Start' and campaignyear = <@CampaignYear> and orgaccountnumber = v.MANAGEDACCOUNT) d1,
(select cast(cast dateyear*1000 datemonth*100 dateday as varchar(255)) as date as date2 from <@Schema>.CampaignDates where datetype = 'End' and campaignyear = <@CampaignYear> and orgaccountnumber = v.MANAGEDACCOUNT) d2
from <@Schema>.VolunteerRelationships v
inner join <@Schema>.organizations o
on o.accountnumber=v.MANAGEDACCOUNT
where v.VOLUNTEERACCOUNT = <@SelectedInd> and ( v.EXPIRYDATE IS NULL OR v.EXPIRYDATE > <@Today> )
Комментарии:
1. Почему вы отметили как mysql, так и sql-server?
2. @HoneyboyWilson исправил теги.
3. Но какую СУБД вы используете? SQL — это всего лишь язык запросов, который отличается от СУБД к СУБД.
4. @HoneyboyWilson Это старая устаревшая CRM-система (Andar 360), в которой есть приложение для построения запросов. Пожалуйста, дайте мне знать, если есть что-то более конкретное, что я могу предоставить, чтобы прояснить любую путаницу.