[英]Self join on a query invalid object Name MSSQL 2008
我正在尝试对此查询进行自我联接,并不断收到错误的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
如果不将其保存为视图或两次重写查询(一次是from,一次是内部联接),就无法做到这一点,可以吗?
使用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成为此类查询的一部分。
您不能以这种方式JOIN
表。 您可能需要创建一个引用两次的视图,或者可以执行以下操作:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.