2012-07-18 216 views
4

我忽略了一些微不足道的东西。除了尝试练习连接两个查询之外,此查询不是特别的原因。我得到的错误是SQL Server 2008加入两个查询

Msg 156, Level 15, State 1, Line 10 
Incorrect syntax near the keyword 'inner'. 
Msg 156, Level 15, State 1, Line 16 
Incorrect syntax near the keyword 'as'. 

并且查询

select t.countyName, x.countyName 
    from 
    (

    SELECT DISTINCT Patient.patientid, tblStateCounties.countyName, Patient.countyCode 
    FROM   Patient INNER JOIN 
          tblStateCounties ON Patient.stateCode = tblStateCounties.stateCode AND Patient.countyCode = tblStateCounties.countyCode 
    WHERE  (Patient.patientage > 80) 
    ) 
    inner join 
    (
    SELECT DISTINCT Patient.patientid, tblStateCounties.countyName, Patient.countyCode 
    FROM   Patient INNER JOIN 
          tblStateCounties ON Patient.stateCode = tblStateCounties.stateCode AND Patient.countyCode = tblStateCounties.countyCode 
    WHERE  (Patient.patientage < 80) 
    ) as x on t.countyname=x.countyname 
+1

你忘了集T别名在你的第一个内部联接 – 2012-07-18 01:43:57

回答

6

您忘记使用别名第一subquery

+1

胡说,我知道这是一些愚蠢的。谢谢:) – wootscootinboogie 2012-07-18 01:46:34

+0

不客气:) – Conan 2012-07-18 01:50:22

3
select t.countyName, x.countyName 
from 
(

    SELECT DISTINCT Patient.patientid, tblStateCounties.countyName, Patient.countyCode 
    FROM   Patient 
    INNER JOIN tblStateCounties ON Patient.stateCode = tblStateCounties.stateCode 
           AND Patient.countyCode = tblStateCounties.countyCode 
     WHERE  (Patient.patientage > 80) 
) rsT 
inner join 
(
     SELECT DISTINCT Patient.patientid, tblStateCounties.countyName, Patient.countyCode 
     FROM   Patient 
     INNER JOIN tblStateCounties ON Patient.stateCode = tblStateCounties.stateCode 
           AND Patient.countyCode = tblStateCounties.countyCode 
     WHERE  (Patient.patientage < 80) 
) rsX on rsT.countyname=rsX.countyname 
+0

不得不改变别名,但它的后工作:) – wootscootinboogie 2012-07-18 01:43:35

+0

@wootscootinboogie对。 – Bert 2012-07-18 01:44:47

0

使用

(
    SELECT DISTINCT Patient.patientid, tblStateCounties.countyName, Patient.countyCode 
    FROM Patient INNER JOIN tblStateCounties 
    ON Patient.stateCode = tblStateCounties.stateCode 
    AND Patient.countyCode = tblStateCounties.countyCode 
    WHERE (Patient.patientage > 80) 
) as t