0

このクエリで自己結合を実行しようとしていますが、エラーが発生し続けますinvalid object name x

select row_number() over(order by patientid,admissiondate, claimsfromdate,datediff(dd,admissiondate, claimsfromdate)) as rn
    ,x.patientid, x.admissiondate, x.claimsfromdate, x.rehabwait

from
(
SELECT distinct 
        patientid
        ,admissiondate
        ,claimsfromdate
        ,DATEDIFF(dd, admissiondate, claimsfromdate) as rehabWait, hcpcs
FROM    Claims
WHERE   hcpcs in ('g0151', '97001', '97002', '9339') and claimsfromdate > admissiondate
) x inner join x as x2 on x.patientid=x2.patientid

ビューとして保存するか、クエリを2回書き直す(fromに1回、内部結合に1回)ことなしにこれを行うことはできませんか?

4

2 に答える 2

1

CTE を使用します。

with x as (
     SELECT distinct patientid, admissiondate, claimsfromdate,
            DATEDIFF(dd, admissiondate, claimsfromdate) as rehabWait, hcpcs
     FROM    Claims
     WHERE   hcpcs in ('g0151', '97001', '97002', '9339') and
             claimsfromdate > admissiondate
    )
select row_number() over (order by patientid, admissiondate,
                                   claimsfromdate,
                                   datediff(dd,admissiondate, claimsfromdate)
                         ) as rn,
       x.patientid, x.admissiondate, x.claimsfromdate, x.rehabwait
from x inner join
     x as x2
     on x.patientid=x2.patientid

元の問題を修正しましたが、x2 を何に使用しているのかわかりません。「SELECT」ステートメントには表示されません。あなたがしているのは、特定の患者に対するすべての請求のクロス積を作成することだけです。おそらくこれは合理的です。group by がそのようなクエリの一部になることを期待しています。

于 2012-08-03T15:58:52.097 に答える
0

JOINその方法でテーブルを作成することはできません。2 回参照するビューを作成するか、次のようにする必要があります。

SELECT row_number() over(order by patientid, admissiondate, claimsfromdate, rehabWait) as rn
    , x.patientid
    , x.admissiondate
    , x.claimsfromdate
    , x.rehabwait 
FROM 
(
    SELECT distinct 
            c1.patientid
            , c1.admissiondate
            , c1.claimsfromdate
            , DATEDIFF(dd, c1.admissiondate, c1.claimsfromdate) as rehabWait
            , c1.hcpcs
    FROM    Claims c1
    INNER JOIN Claims c2
        ON c1.patientid = c2.patientid
    WHERE  c1.hcpcs in ('g0151', '97001', '97002', '9339') and c1.claimsfromdate > c1.admissiondate
) x
于 2012-08-03T15:59:22.377 に答える