SQL Server 2008: мне трудно переводить псевдо-SQL в фактическое выполнение. Короче говоря, у меня есть набор данных, который имеет:
id, startdate, enddate
так, например:
1,1/1/2010,2/1/2010
1,3/1/2010,3/15/2010
2,4/1/2010,6/1/2010
2,5/1/2010,5/15/2010
2,7/1/2010,7/15/2010
Где каждый идентификатор может быть указан несколько раз, а даты могут совпадать.
Мне нужно:
а) Получите дни подряд для каждого удостоверения личности. Так, например:
1 = 1/1/2010 thru 2/1/2010 + 3/1/2010 through 3/15/2010 = 43
2 = 4/1/2010 thru 6/1/2010 + 7/1/2010 through 7/15/2010 (note: the 5/1/10 thru 5/15 was omitted because it overlapped)
Первоначально я думал написать SQL-запрос, который бы делал это:
Date, ID, Active
Я собираю данные за весь год, поэтому у меня будет запись даты / идентификатора для каждого идентификатора в таблице. Значение «активный» будет равно 1 или 0 в зависимости от того, был ли этот идентификатор «включен» для данного конкретного дня.
Тогда я мог бы сгруппировать это и получить свою "отличную" совокупную сумму за год.
Проблема в том, что будет создана таблица с более чем 300 000 000 миллионами записей, и я просто не могу представить, что нет лучшего способа сделать это.
Любой совет будет принят с благодарностью.