Мне нужен SQL-запрос, чтобы возвращать строку для каждого месяца в 2015 и 2016 годах для каждой компании, которая платит взносы. Полученный набор данных покажет, в какие месяцы компания не платила взносы за нулевое значение. Проблема в том, что если они не будут платить взносы, у них не будет записи в базе данных, поэтому никакая строка не появится за месяц. Вот запрос:Показать строку в серии, даже если данные отсутствуют в таблице
SELECT
case when n.co_id <>'' then n.co_id else n.ID end ID
,su.CONTINUOUS_SINCE
,n.COMPANY
,a.EFFECTIVE_DATE
, a.AMOUNT
FROM dbo.Name n
LEFT OUTER JOIN dbo.Activity a ON n.ID = a.ID
inner JOIN dbo.Loc_Info l ON n.ID = l.ID
inner JOIN dbo.Segment_Categories s ON l.CURRENT_SEGMENT = s.CODE
inner JOIN dbo.Subscriptions su on su.id=n.id
WHERE a.PRODUCT_CODE='rental' and n.MEMBER_TYPE in ('rb','rl') and a.EFFECTIVE_DATE Between '2015-07-01' And GetDate() AND a.ACTIVITY_TYPE='dues'
order by case when n.co_id <>'' then n.co_id else n.ID end, EFFECTIVE_DATE asc
Если компания заплатила каждый месяц она работает хорошо, но дело в том, чтобы найти компании, которые не выплатили так предположим, компания XYZ выплачивается каждый месяц в 2015 году, за исключением июня мне нужно строка за июнь для компании XYZ, которая имеет значение NULL или нулевой или какой-либо другой показатель, что они пропустили платеж. В настоящее время строка просто пропущена, потому что данных нет, и трудно найти недостающую строку из тысяч или строк.
Я понимаю, что это, вероятно, другой тип присоединения или что-то в этом роде, но я просто не понимаю, как это работает.
Какая версия SQL Server? –
Извините. SQL 2012. В частности, 12.0.2000.8 – ekim110575