2012-06-14 3 views
0

enter image description hereMultiple присоединяется подзапрос SQL Server 2008

Слева вы увидите мой дизайн для одной таблицы, справа вы увидите результаты подзапроса в приведенном ниже SQL. Я пытаюсь присоединиться к подзапросу на трех полях patientID,claimsFromDate,claimsThroughDate на tblClaims, а внешний запрос связывает правильный tblClaims.ID с соединением трех частей.

Ошибки я получаю:

линия 3, неправильный синтаксис около ключевого слова выберите and неправильный синтаксис вблизи), линия 12

select tblClaims.id, t.primaryCode 
from t 
(
select patientid, claimsfromdate, claimsthroughDate, primarycode from myTable 
union 
select patientid, claimsfromDate, claimsthroughDate, secondaryCode from myTable 
union 
select patientID, claimsfromdate, claimsthroughDate, tertiarycode from myTable 

) as t 
inner join t on tblclaims.patientid=t.patientid 
and tblclaims.claimsfromdate=t.claimsfromdate 
and tblclaims.cllaimsthroughdate=t.claimsfromdate 

EDIT: внутренний запрос заключается в согласовании поля нескольких столбцов. Он возвращает 1,5 миллиона строк. фиксированный запрос я бегала вернулся 3,5 млн, который был

select tblClaims.id, t.primarycode from ( select patientid, claimsfromdate, claimsthroughDate, primarycode from myTable ) as t inner join tblclaims on tblclaims.patientid=t.patientid and tblclaims.claimsfromdate=t.claimsfromdate and tblclaims.cllaimsthroughdate=t.claimsfromdate

+0

Неудивительно, что вы не видели этого - есть t после, просто удалите его. –

ответ

2

Попробуйте это:

select tblClaims.id, t.primarycode 
from 
(
select patientid, claimsfromdate, claimsthroughDate, primarycode from myTable 
) as t 
inner join tblclaims on tblclaims.patientid=t.patientid 
and tblclaims.claimsfromdate=t.claimsfromdate 
and tblclaims.cllaimsthroughdate=t.claimsfromdate 
+0

Это работает, но он возвращает примерно три раза слишком много строк, я не думаю, что это изменит ситуацию, но я отредактирую запрос, чтобы включить весь запрос (я хотел сохранить на беспорядок). – wootscootinboogie

0

ли вы попробовать использовать Distinct?

select DISTINCT tblClaims.id, t.primarycode 
from 
(
    select patientid, claimsfromdate, claimsthroughDate, primarycode from myTable 
) as t 
inner join tblclaims on tblclaims.patientid=t.patientid 
and tblclaims.claimsfromdate=t.claimsfromdate 
and tblclaims.cllaimsthroughdate=t.claimsfromdate 
Смежные вопросы