у меня есть таблица:
docname, specialtycode1, specialtycode2, specialtycode3
У меня есть другой стол
specialtycode1, specialtycode1desc
specialtycode2, specialtrycode2desc
specialtycode3, specialtycode3desc
результат, который я хочу получить:
docname, specialtycode1, secialtycode1desc,
specialtycode2, specialtycode2desc,
specialtycode3, specialtycode3desc
Я пытался сделать запрос, подобный этому:
join dbo.SpecialtyMapping as f on (e.specialtycode1=f.specialtyabbrev
or e.specialtycode2=f.specialtyabbrev
or e.specialtycode3=f.specialtyabbrev)
Не думаю, что это правильное решение, но не знаю с чего начать. пожалуйста, помогите!
вот полный запрос:
WITH cte(rejected) AS (SELECT DISTINCT [Specimen ID]
FROM dbo.QuickLabDump
WHERE (Outcome = 'REJECTED') AND ([Specimen ID] IS NOT NULL))
SELECT CONVERT(VARCHAR(8), a.[Date Entered], 1) AS [Full Date], DATEPART(yy, a.[Date Entered]) AS [Year Entered], LEFT(DATENAME(MONTH, a.[Date Entered]), 3)
AS [Month Entered], DATEPART(dd, a.[Date Entered]) AS [Day Entered], CASE WHEN DATEPART(WEEKDAY, [DATE entered])
= 1 THEN 'Sun' WHEN DATEPART(WEEKDAY, [DATE entered]) = 2 THEN 'Mon' WHEN DATEPART(WEEKDAY, [DATE entered])
= 3 THEN 'Tus' WHEN DATEPART(WEEKDAY, [DATE entered]) = 4 THEN 'Wed' WHEN DATEPART(WEEKDAY, [DATE entered])
= 5 THEN 'Thu' WHEN DATEPART(WEEKDAY, [DATE entered]) = 6 THEN 'Fri' WHEN DATEPART(WEEKDAY, [DATE entered]) = 7 THEN 'Sat' END AS DOW,
CONVERT(VARCHAR(8), DATEADD(D, - (1 * DATEPART(dw, a.[Date Entered])) + 6, a.[Date Entered]), 1) AS [Week Ending], COUNT(DISTINCT a.[Specimen ID])
AS CountAccns, c.SALESREP AS [Sales Rep], c.NPI AS MLNPI, e.NPIb AS IMSNPI, e.SpecialtyPrimaryCodeb AS [IMS Specialty Primary Code],
f.specialtydesc,
e.SpecialtySecondaryCodeb AS [IMS Specialty Secondary Code], e.SpecialtyTertiaryCodeb AS [IMS Specialty Tertiary Code],
e.ProfessionalID1b AS [IMS Professional ID 1], a.[Requesting Physician] AS Physician, a.[Practice Code], b.[MLIS Practice ID] AS [MLIS Code], a.[Practice Name],
c.DATEESTABLISHED AS [Date Established], c.PRACTICEADDRESS1 AS Address, c.PRACTICEADDRESS2 AS Address2, c.PRACTICECITY AS City,
c.PRACTICESTATE AS State, d.[MLIS Status] AS Status, MAX(a.[Order Count]) AS [order count]
FROM dbo.QuickLabDump AS a LEFT OUTER JOIN
dbo.qlmlismapping AS b ON b.[Quicklab ID] = a.[Practice Code] LEFT OUTER JOIN
dbo.PracticeandPhysician AS c ON a.[Requesting Physician] = c.DOCTORFIRSTNAME + ' ' + c.DOCTORLASTNAME AND
a.[Practice Code] = c.PRACTICECODE LEFT OUTER JOIN
dbo.IMSData AS e ON c.NPI = e.NPIb LEFT OUTER JOIN
dbo.QLMLISInfo AS d ON b.[MLIS Practice ID] = d.[MLIS Practice ID]
join dbo.SpecialtyMapping as f on (e.specialtyprimarycodeb=f.specialtyabbrev
or e.specialtysecondarycodeb=f.specialtyabbrev
or e.specialtytertiarycodeb=f.specialtyabbrev)
WHERE (a.[Date Entered] > '20110101') AND (NOT EXISTS
(SELECT 1 AS Expr1
FROM cte AS cte_1
WHERE (rejected = a.[Specimen ID]))) AND (NOT EXISTS
(SELECT 1 AS Expr1
FROM dbo.PendingSpecimens
WHERE ([Specimen ID] = a.[Specimen ID])))
GROUP BY a.[Date Entered], c.SALESREP, c.NPI, e.NPIb, e.SpecialtyPrimaryCodeb, e.SpecialtySecondaryCodeb, e.SpecialtyTertiaryCodeb, e.ProfessionalID1b,
a.[Requesting Physician], a.[Practice Code], b.[MLIS Practice ID], a.[Practice Name], c.DATEESTABLISHED, c.PRACTICEADDRESS1, c.PRACTICEADDRESS2,
c.PRACTICECITY, c.PRACTICESTATE, d.[MLIS Status],f.specialtydesc