Я хочу создать представление, в котором перечислены все дни рождения всех людей. Допустим, я хочу «развернуть» таблицу.Как расширить таблицу sql?
У меня есть стол с идентификатором атрибутов и днем рождения. У меня есть функция FuncBirthdays, которая принимает идентификатор и день рождения, а затем перечисляет все дни рождения до текущей даты. Например:
SELECT * FROM FuncBirthdays (123, '01 .01.2014 ');
Result:
123; '01.01.2014'
123; '01.01.2015'
123; '01.01.2016'
// Current date is 14.01.2016, so the list stops here.
Теперь я хочу создать представление со всеми днями рождения всех лиц в таблице Person.
SELECT *
FROM
Person
INNER JOIN
(SELECT * FROM FuncBirthdays(Person.ID, Person.Birthday)) FB
ON Person.ID = FB.ID
Сообщение об ошибке в MS SQL Server 2012 Studio заключается в том, что Person.ID и Person.Birthday не связаны.
Я предполагаю, что этот путь сталкивается с тем, как делаются JOINS. Какие SQL-концепции можно использовать для расширения таблицы? Каждый набор данных в Person генерирует переменное количество наборов данных на выходе. В настоящее время я решил эту проблему с помощью функции C# .net, которая собирает данные вручную. Есть ли чистый путь SQL?
Благодаря
Martin
Вы можете вызвать табличные значения функции из ЕКОМ с помощью [оператор APPLY]. @DMayuri предоставил отличный пример ниже. –