2015-04-08 3 views
0

Код ниже должен захватить несколько значений из нескольких таблиц через 2 базы данных но, как я пытался реализовать T-SQL select rows by oldest date and unique category решения вопроса, я обнаружил ошибку, когда последняя строка моего кода будет сказать: «Некорректный синтаксис около ')'. "Выберите только старые уникальные записи

--Create Table #tmp2(FK_clientids varchar(50)) 
--Create table #tmp (phonenums varchar(50)) 
Delete from #tmp2 
Delete from #tmp 
Use Database2 
INSERT INTO #tmp2 
SELECT fk_clientid 
FROM DM_ClientApplicants 
where DM_ClientApplicants.FK_ApplicationID in (39155) 
Use Database2 
INSERT INTO #tmp 
Select phonenum2 from DM_PhoneNumbers 
where FK_ApplicationID in 
(
    Select FK_clientIDs from #tmp2 
) 
INSERT INTO #tmp 
Select PhoneNum1 from DM_PhoneNumbers 
where FK_ApplicationID in 
(
    Select FK_clientIDs from #tmp2 
) 
INSERT INTO #tmp 
Select PhoneNum2 from DM_PhoneNumbers 
where FK_ApplicationID in 
(
    Select FK_clientIDs from #tmp2 
) 

INSERT INTO #tmp 
Select PhoneNum3 from DM_PhoneNumbers 
where FK_ApplicationID in 
(
    Select FK_clientIDs from #tmp2 
) 
INSERT INTO #tmp 
Select Partnerphonehome from DM_PhoneNumbers 
where FK_ApplicationID in 
(
    Select FK_clientIDs from #tmp2 
) 
INSERT INTO #tmp 
Select Partnerphonemobile from DM_PhoneNumbers 
where FK_ApplicationID in 
(
    Select FK_clientIDs from #tmp2 
) 
INSERT INTO #tmp 
Select Partnerphonework from DM_PhoneNumbers 
where FK_ApplicationID in 
(
    Select FK_clientIDs from #tmp2 
) 
Use Database1 
Select PhoneNum,sourcetable,c.FK_ApplicationID,SolRef,DT.Subject,dt.CreatedDate 
from (select PhoneNum,sourcetable,c.FK_ApplicationID,SolRef,DT.Subject,dt.CreatedDate, 
      row_number() over(partition by OrderNO order by dt.CreatedDate desc) rn 
     from Dial D 
     join Database2.dbo.DM_PhoneNumbers P on PhoneNum collate Latin1_General_CI_AS = PhoneNum1 
     join Database2.dbo.DM_ClientApplicants C on P.FK_ApplicationID = C.FK_ClientID 
     join Database2.dbo.DM_Sol S on C.FK_ApplicationID = S.FK_ApplicationID 
     join Database2.dbo.DM_ApplicationDetails AD on AD.FK_ApplicationID = S.FK_ApplicationID 
     join Database2.dbo.Tasks DT on DT.FK_ApplicationID = S.FK_ApplicationID 
where PhoneNum in 
(Select phonenums from #tmp) 

UPDATE: Так скобка рядом «RN» открыт, но если я пытаюсь закрыть это остальную часть заявления не понял, кто-нибудь знает почему?

ответ

1

Конец вашего SQL должен быть:

Use Database1 
Select PhoneNum,sourcetable,FK_ApplicationID,SolRef,Subject,CreatedDate 
from 
(
    select PhoneNum,sourcetable,c.FK_ApplicationID,SolRef,DT.Subject,dt.CreatedDate 
    ,row_number() over(partition by OrderNO order by dt.CreatedDate desc) rn 
    from Dial D 
    join Database2.dbo.DM_PhoneNumbers P on PhoneNum collate Latin1_General_CI_AS = PhoneNum1 
    join Database2.dbo.DM_ClientApplicants C on P.FK_ApplicationID = C.FK_ClientID 
    join Database2.dbo.DM_Sol S on C.FK_ApplicationID = S.FK_ApplicationID 
    join Database2.dbo.DM_ApplicationDetails AD on AD.FK_ApplicationID = S.FK_ApplicationID 
    join Database2.dbo.Tasks DT on DT.FK_ApplicationID = S.FK_ApplicationID 
    where PhoneNum in 
    (
     Select phonenums from #tmp 
    ) 
)a -- add 
Смежные вопросы