我将不胜感激任何协助。我正在尝试在2个子查询上执行连接,但它一直说选择列表中的'IntEncTracking.EncounterList.ClaimId'无效,因为它不包含在聚合函数或GROUP BY子句中,但我已经尝试用el和q2来限定它,但无济于事。任何建议都将不胜感激。
声明@SweepId为int = 10160,@ RunType为varchar ='Initial'
Select * from (Select distinct ClaimId , LineNum , 0 as EncounterLineNum , EncounterType , InternalICN , PreviousDpwICN , 0 as ClaimFrequencyCd , EncounterPeriod , 2 as StatusCd , BypassReason , null as EncounterFileNm ,@SweepId as SweepId from IntEncTracking.EncounterList where bypassflag = 1) as q1 join ( Select ClaimId , 0 as LineNum , 0 as EncounterLineNum , EncounterType , InternalICN , PreviousDpwICN , max(ClaimFreqCd) as ClaimFreqCd , max(EncounterPeriod) as EncounterPeriod , case when exists (select 'x' from IntEncTracking.EncounterList el1 where el1.claimid = claimid and BypassFlag = 0) then 1 else 2 end stscd , case when @RunType = 'Initial' then 100 else 300 end as [StatusReasonCd] , null as EncounterFileNm , @SweepId as SweepId from IntEncTracking.EncounterList el where BypassFlag = 0) as q2 on q1.ClaimId = q2.ClaimId and q1.LineNum = q2.LineNum and q1.EncounterLineNum = q2.EncounterLineNum and q1.EncounterType = q2.EncounterType and q1.InternalICN = q2.InternalICN group by q1.ClaimId, q1.EncounterType, q1.InternalICN, q1.PreviousDpwICN order by q2.ClaimId, q2.LineNum, q2.EncounterLineNum, q2.EncounterType, q2.InternalICN
答案 0 :(得分:0)
这只是一个syntex ..
Declare @SweepId as int = 10160, @RunType as varchar = 'Initial'
select *
from (Select distinct ClaimId
, LineNum
, EncounterLineNum
, 0
, EncounterType
, InternalICN
, PreviousDpwICN
, 0
, EncounterPeriod
, 2
, BypassReason
, null
,@SweepId
from IntEncTracking.EncounterList
where bypassflag = 1) as q1
join
(Select ClaimId
, 0 as LineNum
, 0 as EncounterLineNum
, EncounterType
, InternalICN
, PreviousDpwICN
, max(ClaimFreqCd) as ClaimFreqCd
, max(EncounterPeriod) as EncounterPeriod
, case when exists (select 'x'
from IntEncTracking.EncounterList el1
where el1.claimid = claimid
and BypassFlag = 0) then 1
else 2
end stscd
, case when @RunType = 'Initial' then 100 else 300 end as [StatusReasonCd]
, null as EncounterFileNm
, @SweepId
from IntEncTracking.EncounterList el
where BypassFlag = 0) as q2
on q1.ClaimId = q2.ClaimId and
on q1.LineNum = q2.LineNum and
on q1.EncounterLineNum = q2.EncounterLineNum and
on q1.EncounterType = q2.EncounterType and
on q1.InternalICN = q2.InternalICN
group by ClaimId, encountertype, internalicn, PreviousDpwICN
order by ClaimId, LineNum, EncounterLineNum,EncounterType,InternalICN
答案 1 :(得分:0)
我总是做这样的事情
;with EncounterValues as(
SELECT
CommonValueOrId,
ect..
FROM
IntEntTracking.EncountrList
)
, EncounterFileNums as(
SELECT
CommonValueOrId,
ect..
FROM
IntEncTracking.EncounterList
)
SELECT
ev.AnyField,
efn.AnyField
FROM
EncounterValues ev
LEFT JOIN EncounterFileNums efn
ON ev.CommonValueOrId = evn.CommonValueOrId
不确定这样做的含义是什么,但如果你正在努力,可能值得一试。