I am trying to return all languages spoken by an individual in a single field to use in a SSRS report.
SELECT DISTINCT
-- #Selection Fields
Demo.FirstName
,Demo.LastName
,Demo.MiddleName
,Demo.NationalProviderID AS [NPI 1]
,Demo.PractitionerFormalTitle AS [License abv]
,Demo.ReceivedDate AS [Start Date]
,Demo.Notes AS [Subspecialties]
,Demo.SocialSecurityNumber
,Demo.GenderName
,Demo.BirthDate
,Demo.CompletedDate AS [Original Delegation Date]
,Demo.RenewalDate AS [Recred Due]
,Demo.CompletedDate AS [Last Recred Completed]
,CAQH.IDNumber AS [CAQH Number]
,TIN.TaxIDNumber AS [TIN]
,Location.PracticeNationalProviderID AS [NPI 2]
,Location.LineNumber1 AS [Location 1]
,Location.LineNumber2 AS [Location 2]
,Location.City AS [Location City]
,Location.[State] AS [Location State]
,Location.ZipCode AS [Location Zip]
,Location.TwentyFourHourCoverage [ADA Compliant]
,Location.PracticeLegalName
,Medicare.ProviderNumber [Medicare Number]
,Education.DegreeName
,Education.InstitutionName AS [School Name]
,Education.DateFrom AS [School Start Date]
,Education.DateTo AS [School End Date]
,SchoolAddress.LineNumber1 AS [School Line1]
,SchoolAddress.LineNumber2 AS [School Line2]
,SchoolAddress.City AS [School City]
,SchoolAddress.[STATE] AS [School State]
,SchoolAddress.ZipCode AS [School Zip]
,State.IssuingState AS [License State]
,State.LicenseNumber AS [State License Number]
,State.IssueDate AS [State Issue Date]
,State.ExpirationDate AS [State Expiration Date]
,State.ActiveStatePractice AS [Medicare Products y/n]
,DEA.LicenseNumber AS [DEA Number]
,DEA.IssueDate AS [DEA Issue Date]
,DEA.ExpirationDate AS [DEA Expiration]
,DEA.IssuingState AS [DEA State]
,CDS.LicenseNumber AS [CDS Number]
,CDS.IssueDate AS [CDS Issue Date]
,CDS.ExpirationDate AS [CDS Expiration]
,Specialties.TaxonomyCode
,Specialties.BoardStatusTypeName AS [Board Name]
,Specialties.BoardStatusTypeID
,Specialties.CertificationDate
,Specialties.ExpirationDate AS [Board Expiration]
,Specialties.CertificationNumber
,Email.EmailAddress
Currently I have this long Concat that brings together all the languages that are linked to a person.
,CONCAT (English.LanguageName, ASL.LanguageName,
Amharic.LanguageName, Swahili.LanguageName, Anang.LanguageName,
Arabic.LanguageName, Armenian.LanguageName,
Azarbaijani.LanguageName, Azeri.LanguageName,
Bengali.LanguageName, Bulgarian.LanguageName,
CanadianFrench.LanguageName, Cantonese.LanguageName,
Chaldean.LanguageName, Chinese.LanguageName, Creole.LanguageName,
Croatian.LanguageName, Czech.LanguageName, Danish.LanguageName,
Dari.LanguageName, Dutch.LanguageName, Efik.LanguageName,
Farsi.LanguageName, Filipino.LanguageName, Flemish.LanguageName,
French.LanguageName, German.LanguageName, Greek.LanguageName,
Gujarati.LanguageName, Haitian.LanguageName, Hakkai.LanguageName,
Hebrew.LanguageName, Hindi.LanguageName, Hindustani.LanguageName,
Llocano.LanguageName, Indian.LanguageName, Italian.LanguageName,
Japanese.LanguageName, Kannada.LanguageName,
Kiswahili.LanguageName, Konkani.LanguageName,
Korean.LanguageName, Kurdish.LanguageName, Laotian.LanguageName,
Latvian.LanguageName, Lithuanian.LanguageName,
Macedonian.LanguageName, Malayalam.LanguageName,
MandarinChinese.LanguageName, Marathi.LanguageName,
Marwari.LanguageName, Nigerian.LanguageName,
Norwegian.LanguageName, oriya.LanguageName, Pahari.LanguageName,
Pashto.LanguageName, Persian.LanguageName,
Philipino.LanguageName, Polish.LanguageName,
Portuguese.LanguageName, Punjabi.LanguageName,
Romanian.LanguageName, Russian.LanguageName,
Sanskrit.LanguageName, Serbian.LanguageName,
Sicilian.LanguageName, Sindhi.LanguageName,
Sinhalese.LanguageName, Slavic.LanguageName,
Spanish.LanguageName, Syriac.LanguageName, Tagalog.LanguageName,
Taiwanese.LanguageName, Tamil.LanguageName, Telugu.LanguageName,
Thai.LanguageName, Tigrinya.LanguageName, Turkish.LanguageName,
Ukrainian.LanguageName, Urdu.LanguageName,
Vietnamese.LanguageName, Yoruba.LanguageName,
Yugoslavian.LanguageName) AS [Languages]
-- #endSelcetion fields
FROM vwPractitionerDemographics Demo
LEFT OUTER JOIN vwPractitionerEmails Email
ON Email.PractitionerID = Demo.PractitionerID
AND Email.EmailTypeID = '1111197'
LEFT OUTER JOIN vwPractitionerEducation Education
ON Education.PractitionerID = Demo.PractitionerID
AND Education.Completed = 'Y'
LEFT OUTER JOIN vwInstitutionAddresses SchoolAddress
ON SchoolAddress.InstitutionID = Education.InstitutionID
LEFT OUTER JOIN vwPractitionerSpecialties Specialties
ON Specialties.PractitionerID = Demo.PractitionerID
AND Specialties.PrimarySpecialty = 'Y'
And Specialties.CertificationNumber Is Not null
LEFT OUTER JOIN vwPractitionerAlternateIDs CAQH
ON CAQH.ProviderID = Demo.PractitionerID
AND CAQH.AlternateIDTypeID = '1111033'
LEFT OUTER JOIN vwPractitionerProducts Plans
ON Plans.PractitionerID = Demo.PractitionerID
--Join all Licenses by Types
LEFT OUTER JOIN vwPractitionerLicenses State
ON Demo.PractitionerID = State.PractitionerID
AND state.LicenseTypeCode = 'State'
And state.Archived = 'N'
LEFT OUTER JOIN vwPractitionerLicenses DEA
ON Demo.PractitionerID = DEA.PractitionerID
AND DEA.LicenseTypeCode = 'DEA'
AND DEA.IssuingState = State.IssuingState
LEFT OUTER JOIN vwPractitionerLicenses CDS
ON Demo.PractitionerID = CDS.PractitionerID
AND CDS.LicenseTypeCode = 'CDS'
And CDS.IssuingState = State.IssuingState
--Locations linked to applicable licenses
LEFT OUTER JOIN vwPractitionerLocations Location
ON Plans.PractitionerID = Location.PractitionerID
AND Location.[State] = State.IssuingState
And Location.PracticeID = Plans.PracticeID
Left Outer Join vwPractitionerProducts Medicare
On Medicare.PractitionerID = Demo.PractitionerID
And Medicare.PracticeID = Location.PracticeID
And Medicare.ProviderNumber Is Not null
Left Outer Join vwPracticeLocations TIN
On TIN.PracticeID = Location.PracticeID
So there are currently all the following Joins to query the same table for possible languages that could be linked to a person.
--Joins or each language so each language can be queried
separately and placed in the same cell for all languages that are
present in the database
LEFT OUTER JOIN vwPractitionerLanguages English
ON English.PractitionerID = Demo.PractitionerID
AND English.LanguageID = '13272'
LEFT OUTER JOIN vwPractitionerLanguages Swahili
ON Swahili.PractitionerID = Demo.PractitionerID
AND Swahili.LanguageID = '35055'
LEFT OUTER JOIN vwPractitionerLanguages ASL
ON ASL.PractitionerID = Demo.PractitionerID
AND ASL.LanguageID = '35050'
LEFT OUTER JOIN vwPractitionerLanguages Amharic
ON Amharic.PractitionerID = Demo.PractitionerID
AND Amharic.LanguageID = '35001'
LEFT OUTER JOIN vwPractitionerLanguages Anang
ON Anang.PractitionerID = Demo.PractitionerID
AND Anang.LanguageID = '35002'
LEFT OUTER JOIN vwPractitionerLanguages Arabic
ON Arabic.PractitionerID = Demo.PractitionerID
AND Arabic.LanguageID = '13265'
LEFT OUTER JOIN vwPractitionerLanguages Armenian
ON Armenian.PractitionerID = Demo.PractitionerID
AND Armenian.LanguageID = '13266'
LEFT OUTER JOIN vwPractitionerLanguages Azarbaijani
ON Azarbaijani.PractitionerID = Demo.PractitionerID
AND Azarbaijani.LanguageID = '35004'
LEFT OUTER JOIN vwPractitionerLanguages Azeri
ON Azeri.PractitionerID = Demo.PractitionerID
AND Swahili.LanguageID = '1111802'
LEFT OUTER JOIN vwPractitionerLanguages Bengali
ON Bengali.PractitionerID = Demo.PractitionerID
AND Bengali.LanguageID = '35005'
LEFT OUTER JOIN vwPractitionerLanguages Bulgarian
ON Bulgarian.PractitionerID = Demo.PractitionerID
AND Bulgarian.LanguageID = '35006'
LEFT OUTER JOIN vwPractitionerLanguages CanadianFrench
ON CanadianFrench.PractitionerID = Demo.PractitionerID
AND CanadianFrench.LanguageID = '13267'
LEFT OUTER JOIN vwPractitionerLanguages Cantonese
ON Cantonese.PractitionerID = Demo.PractitionerID
AND Cantonese.LanguageID = '35007'
LEFT OUTER JOIN vwPractitionerLanguages Chaldean
ON Chaldean.PractitionerID = Demo.PractitionerID
AND Chaldean.LanguageID = '35008'
LEFT OUTER JOIN vwPractitionerLanguages Chinese
ON Chinese.PractitionerID = Demo.PractitionerID
AND Chinese.LanguageID = '13268'
LEFT OUTER JOIN vwPractitionerLanguages Creole
ON Creole.PractitionerID = Demo.PractitionerID
AND Creole.LanguageID = '35009'
LEFT OUTER JOIN vwPractitionerLanguages Croatian
ON Croatian.PractitionerID = Demo.PractitionerID
AND Croatian.LanguageID = '35010'
LEFT OUTER JOIN vwPractitionerLanguages Czech
ON Czech.PractitionerID = Demo.PractitionerID
AND Czech.LanguageID = '35011'
LEFT OUTER JOIN vwPractitionerLanguages Danish
ON Danish.PractitionerID = Demo.PractitionerID
AND Danish.LanguageID = '13270'
LEFT OUTER JOIN vwPractitionerLanguages Dari
ON Dari.PractitionerID = Demo.PractitionerID
AND Dari.LanguageID = '35012'
LEFT OUTER JOIN vwPractitionerLanguages Dutch
ON Dutch.PractitionerID = Demo.PractitionerID
AND Dutch.LanguageID = '13271'
LEFT OUTER JOIN vwPractitionerLanguages Efik
ON Efik.PractitionerID = Demo.PractitionerID
AND Efik.LanguageID = '35013'
LEFT OUTER JOIN vwPractitionerLanguages Farsi
ON Farsi.PractitionerID = Demo.PractitionerID
AND Farsi.LanguageID = '35014'
LEFT OUTER JOIN vwPractitionerLanguages Filipino
ON Filipino.PractitionerID = Demo.PractitionerID
AND Filipino.LanguageID = '35016'
LEFT OUTER JOIN vwPractitionerLanguages Flemish
ON Flemish.PractitionerID = Demo.PractitionerID
AND Flemish.LanguageID = '13273'
LEFT OUTER JOIN vwPractitionerLanguages French
ON French.PractitionerID = Demo.PractitionerID
AND French.LanguageID = '13274'
LEFT OUTER JOIN vwPractitionerLanguages German
ON German.PractitionerID = Demo.PractitionerID
AND German.LanguageID = '13275'
LEFT OUTER JOIN vwPractitionerLanguages Greek
ON Greek.PractitionerID = Demo.PractitionerID
AND Greek.LanguageID = '13276'
LEFT OUTER JOIN vwPractitionerLanguages Gujarati
ON Gujarati.PractitionerID = Demo.PractitionerID
AND Gujarati.LanguageID = '13273'
LEFT OUTER JOIN vwPractitionerLanguages Haitian
ON Haitian.PractitionerID = Demo.PractitionerID
AND Haitian.LanguageID = '1116065'
LEFT OUTER JOIN vwPractitionerLanguages Hakkai
ON Hakkai.PractitionerID = Demo.PractitionerID
AND Hakkai.LanguageID = '35018'
LEFT OUTER JOIN vwPractitionerLanguages Hebrew
ON Hebrew.PractitionerID = Demo.PractitionerID
AND Hebrew.LanguageID = '13277'
LEFT OUTER JOIN vwPractitionerLanguages Hindi
ON Hindi.PractitionerID = Demo.PractitionerID
AND Hindi.LanguageID = '35019'
LEFT OUTER JOIN vwPractitionerLanguages Hindustani
ON Hindustani.PractitionerID = Demo.PractitionerID
AND Hindustani.LanguageID = '13278'
LEFT OUTER JOIN vwPractitionerLanguages Llocano
ON Llocano.PractitionerID = Demo.PractitionerID
AND Llocano.LanguageID = '1117304'
LEFT OUTER JOIN vwPractitionerLanguages Indian
ON Indian.PractitionerID = Demo.PractitionerID
AND Indian.LanguageID = '35025'
LEFT OUTER JOIN vwPractitionerLanguages Italian
ON Italian.PractitionerID = Demo.PractitionerID
AND Italian.LanguageID = '13279'
LEFT OUTER JOIN vwPractitionerLanguages Japanese
ON Japanese.PractitionerID = Demo.PractitionerID
AND Japanese.LanguageID = '13280'
LEFT OUTER JOIN vwPractitionerLanguages Kannada
ON Kannada.PractitionerID = Demo.PractitionerID
AND Kannada.LanguageID = '35026'
LEFT OUTER JOIN vwPractitionerLanguages Kiswahili
ON Kiswahili.PractitionerID = Demo.PractitionerID
AND Kiswahili.LanguageID = '35027'
LEFT OUTER JOIN vwPractitionerLanguages Konkani
ON Konkani.PractitionerID = Demo.PractitionerID
AND Konkani.LanguageID = '35028'
LEFT OUTER JOIN vwPractitionerLanguages Korean
ON Korean.PractitionerID = Demo.PractitionerID
AND Korean.LanguageID = '35029'
LEFT OUTER JOIN vwPractitionerLanguages Kurdish
ON Kurdish.PractitionerID = Demo.PractitionerID
AND Kurdish.LanguageID = '35030'
LEFT OUTER JOIN vwPractitionerLanguages Laotian
ON Laotian.PractitionerID = Demo.PractitionerID
AND Laotian.LanguageID = '1116043'
LEFT OUTER JOIN vwPractitionerLanguages Latvian
ON Latvian.PractitionerID = Demo.PractitionerID
AND Latvian.LanguageID = '35031'
LEFT OUTER JOIN vwPractitionerLanguages Lithuanian
ON Lithuanian.PractitionerID = Demo.PractitionerID
AND Lithuanian.LanguageID = '35032'
LEFT OUTER JOIN vwPractitionerLanguages Macedonian
ON Macedonian.PractitionerID = Demo.PractitionerID
AND Macedonian.LanguageID = '35033'
LEFT OUTER JOIN vwPractitionerLanguages Malayalam
ON Malayalam.PractitionerID = Demo.PractitionerID
AND Malayalam.LanguageID = '35034'
LEFT OUTER JOIN vwPractitionerLanguages MandarinChinese
ON MandarinChinese.PractitionerID = Demo.PractitionerID
AND MandarinChinese.LanguageID = '35035'
LEFT OUTER JOIN vwPractitionerLanguages Marathi
ON Marathi.PractitionerID = Demo.PractitionerID
AND Marathi.LanguageID = '35036'
LEFT OUTER JOIN vwPractitionerLanguages Marwari
ON Marwari.PractitionerID = Demo.PractitionerID
AND Marwari.LanguageID = '35037'
LEFT OUTER JOIN vwPractitionerLanguages Nigerian
ON Nigerian.PractitionerID = Demo.PractitionerID
AND Nigerian.LanguageID = '1117126'
LEFT OUTER JOIN vwPractitionerLanguages Norwegian
ON Norwegian.PractitionerID = Demo.PractitionerID
AND Norwegian.LanguageID = '1116045'
LEFT OUTER JOIN vwPractitionerLanguages Oriya
ON Oriya.PractitionerID = Demo.PractitionerID
AND Oriya.LanguageID = '35038'
LEFT OUTER JOIN vwPractitionerLanguages Pahari
ON Pahari.PractitionerID = Demo.PractitionerID
AND Pahari.LanguageID = '35039'
LEFT OUTER JOIN vwPractitionerLanguages Pashto
ON Pashto.PractitionerID = Demo.PractitionerID
AND Pashto.LanguageID = '35041'
LEFT OUTER JOIN vwPractitionerLanguages Persian
ON Persian.PractitionerID = Demo.PractitionerID
AND Persian.LanguageID = '35042'
LEFT OUTER JOIN vwPractitionerLanguages Philipino
ON Philipino.PractitionerID = Demo.PractitionerID
AND Philipino.LanguageID = '35043'
LEFT OUTER JOIN vwPractitionerLanguages Polish
ON Polish.PractitionerID = Demo.PractitionerID
AND Polish.LanguageID = '13281'
LEFT OUTER JOIN vwPractitionerLanguages Portuguese
ON Portuguese.PractitionerID = Demo.PractitionerID
AND Portuguese.LanguageID = '13282'
LEFT OUTER JOIN vwPractitionerLanguages Punjabi
ON Punjabi.PractitionerID = Demo.PractitionerID
AND Punjabi.LanguageID = '35044'
LEFT OUTER JOIN vwPractitionerLanguages Romanian
ON Romanian.PractitionerID = Demo.PractitionerID
AND Romanian.LanguageID = '35045'
LEFT OUTER JOIN vwPractitionerLanguages Russian
ON Russian.PractitionerID = Demo.PractitionerID
AND Russian.LanguageID = '13283'
LEFT OUTER JOIN vwPractitionerLanguages Sanskrit
ON Sanskrit.PractitionerID = Demo.PractitionerID
AND Sanskrit.LanguageID = '35046'
LEFT OUTER JOIN vwPractitionerLanguages Serbian
ON Serbian.PractitionerID = Demo.PractitionerID
AND Serbian.LanguageID = '35048'
LEFT OUTER JOIN vwPractitionerLanguages Sicilian
ON Sicilian.PractitionerID = Demo.PractitionerID
AND Sicilian.LanguageID = '35049'
LEFT OUTER JOIN vwPractitionerLanguages Sindhi
ON Sindhi.PractitionerID = Demo.PractitionerID
AND Sindhi.LanguageID = '35051'
LEFT OUTER JOIN vwPractitionerLanguages Sinhalese
ON Sinhalese.PractitionerID = Demo.PractitionerID
AND Sinhalese.LanguageID = '35052'
LEFT OUTER JOIN vwPractitionerLanguages Slavic
ON Slavic.PractitionerID = Demo.PractitionerID
AND Slavic.LanguageID = '13284'
LEFT OUTER JOIN vwPractitionerLanguages Spanish
ON Spanish.PractitionerID = Demo.PractitionerID
AND Spanish.LanguageID = '13285'
LEFT OUTER JOIN vwPractitionerLanguages Syriac
ON Syriac.PractitionerID = Demo.PractitionerID
AND Syriac.LanguageID = '35056'
LEFT OUTER JOIN vwPractitionerLanguages Tagalog
ON Tagalog.PractitionerID = Demo.PractitionerID
AND Tagalog.LanguageID = '35057'
LEFT OUTER JOIN vwPractitionerLanguages Taiwanese
ON Taiwanese.PractitionerID = Demo.PractitionerID
AND Taiwanese.LanguageID = '35058'
LEFT OUTER JOIN vwPractitionerLanguages Tamil
ON Tamil.PractitionerID = Demo.PractitionerID
AND Tamil.LanguageID = '35059'
LEFT OUTER JOIN vwPractitionerLanguages Telugu
ON Telugu.PractitionerID = Demo.PractitionerID
AND Telugu.LanguageID = '35060'
LEFT OUTER JOIN vwPractitionerLanguages Thai
ON Thai.PractitionerID = Demo.PractitionerID
AND Thai.LanguageID = '35061'
LEFT OUTER JOIN vwPractitionerLanguages Tigrinya
ON Tigrinya.PractitionerID = Demo.PractitionerID
AND Tigrinya.LanguageID = '35062'
LEFT OUTER JOIN vwPractitionerLanguages Turkish
ON Turkish.PractitionerID = Demo.PractitionerID
AND Turkish.LanguageID = '35063'
LEFT OUTER JOIN vwPractitionerLanguages Ukrainian
ON Ukrainian.PractitionerID = Demo.PractitionerID
AND Ukrainian.LanguageID = '35064'
LEFT OUTER JOIN vwPractitionerLanguages Urdu
ON Urdu.PractitionerID = Demo.PractitionerID
AND Urdu.LanguageID = '35065'
LEFT OUTER JOIN vwPractitionerLanguages Vietnamese
ON Vietnamese.PractitionerID = Demo.PractitionerID
AND Vietnamese.LanguageID = '35066'
LEFT OUTER JOIN vwPractitionerLanguages Yoruba
ON Yoruba.PractitionerID = Demo.PractitionerID
AND Yoruba.LanguageID = '1116005'
LEFT OUTER JOIN vwPractitionerLanguages Yugoslavian
ON Yugoslavian.PractitionerID = Demo.PractitionerID
AND Yugoslavian.LanguageID = '35067'
Where
Demo.Archived = 'N'
And Location.Archived = 'N'
And Plans.Archived = 'N'
AND Demo.ApplicationStatusID NOT IN ('1111152', '1118448')
AND Demo.PractitionerTypeID NOT IN ('1112367', '1119027')
And Location.[State] In (@State)
This has over 200 joins and a very long CONCAT column. What is more efficient and would speed up the query?
My issue is I don't know which languages a person would have and I need them all to pull in the same column.