Ограничить записи в перекрестном соединении датой вступления в силу
В SQL Server 2012 я пытаюсь воссоздать детальную запись транзакции продаж из двух таблиц, которые имеют хронологическую сводную информацию, но, похоже, не могут ограничивать записи на основе даты начала клиента. (На самом деле есть 3 таблицы, одна с категориями товаров клиента и% от продаж по категориям, но у меня нет проблем с этой частью перекрестного соединения). Любая помощь будет оценена.
Представьте себе два стола:
Покупатель Идентификатор клиента Sales_Monthly Date_start 1 акме $80 000,00 15.01.2012 2 Универсальный $50,000.00 1/3/2013 3 SuperMart $12,000.00 14.04.2013
Календарь ID Дата 1 1 /31/2014 2 2 /28/2014 3 3 /31/2014 4 4 /30/2014 5 5 /30/2014 6 6 /30/2014 7 7 /30/2014 8 8 /30/2014 9 9 /30/2014 10 30.10.2014 11 30.11.2014 12/30/2014
Простое перекрестное соединение:
SELECT Calendar.Date, Customer.ID, Customer.Customername, Customer.Sales_2013
FROM Calendar, Customer
производит 36 записей, как и следовало ожидать (3 клиента х 12 месяцев)
Тем не менее, я хочу только создать записи 28 записей, где [Calendar.Date] > [Customer.Date_start]
Я не могу найти WHERE CLAUSE и любой тип соединения или подзапрос, который будет ограничивать мои записи на основе поля Customer.Date_start. Есть предложения по этому поводу?
1 ответ
Если вы присоединяетесь к полю в перекрестном соединении, это больше не перекрестное соединение. Предполагая, что ваши данные о клиенте в этом вопросе неверны, и вы указали, что для всех записей клиентов будет 2014 год, вы можете выполнить объединение следующим образом.
SELECT *
FROM Customer a
JOIN Calendar b ON b.Date > a.Date_start
В результате получается 33 строки (12 для клиента 1, 12 для клиента 2 и 9 для клиента 3, а не 28, как вы ожидаете), но, надеюсь, мой ответ укажет вам правильное направление.