В следующем разделе кода возвращаются несколько столбцов для нескольких записей.
SELECT a.ClientID,ltrim(rtrim(c.FirstName)) + ' ' + </p>
<pre><code>case when c.MiddleName <> '' then
ltrim(rtrim(c.MiddleName)) + '. '
else ''
end +
ltrim(rtrim(c.LastName)) as ClientName, a.MISCode, b.Address, b.City, dbo.ClientGetEnrolledPrograms(CONVERT(int,a.ClientID)) as Abbreviation
FROM ClientDetail a
JOIN Address b on(a.PersonID = b.PersonID)
JOIN Person c on(a.PersonID = c.PersonID)
LEFT JOIN ProgramEnrollments d on(d.ClientID = a.ClientID and d.Status = 'Enrolled' and d.HistoricalPKID is null)
LEFT JOIN Program e on(d.ProgramID = e.ProgramID and e.HistoricalPKID is null)
WHERE a.MichiganWorksData=1
Я выделил проблему в таблицу ProgramEnrollments.
Эта таблица содержит отношения «один ко многим», где каждый ClientID может быть зарегистрирован во многих программах. Таким образом, для каждой программы, в которую зарегистрирован клиент, в таблице есть запись.
Таким образом, окончательный набор результатов возвращает строку для каждой строки в таблице ProgramEnrollments на основе этих объединений.
Я предполагаю, что мое соединение - проблема, но я не вижу проблемы.
Мысли / Предложения
Спасибо
Чак