【问题标题】:Multiple joins subquery SQL Server 2008多个连接子查询 SQL Server 2008
【发布时间】:2012-06-14 15:18:43
【问题描述】:

在左侧,您将看到我为一个表设计的设计,在右侧,您将看到下面 SQL 中子查询的结果。我正在尝试在 tblClaims 上的三个字段 patientID,claimsFromDate,claimsThroughDate 上加入子查询,并让外部查询将正确的 tblClaims.ID 与三部分连接相关联。

我得到的错误:

第 3 行,关键字 selectandincorrect 附近的语法不正确 ) 附近的语法,第 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

编辑:内部查询是协调多列字段。它返回 150 万行。 我运行的固定查询返回了 350 万个

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

【问题讨论】:

  • 难怪你没看到 - from 后面有 t,去掉就行了。

标签: sql sql-server-2008 tsql


【解决方案1】:

试试这个:

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

【讨论】:

  • 这会运行,但它返回的行数大约是它的三倍,我认为这不会产生影响,但我会编辑查询以包含整个查询(我想节省混乱)。
【解决方案2】:

您是否尝试过使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多