2013-07-16 99 views
0

我希望有任何幫助w/this。我試圖在2個子查詢上執行連接,但它一直說選擇列表中的'IntEncTracking.EncounterList.ClaimId'是無效的,因爲它不包含在聚合函數或GROUP BY子句中,但我已經試圖用el和q2來排位,但無濟於事。任何建議將不勝感激。加入2個子查詢

聲明@SweepId爲INT = 10160,@RunType爲varchar = '初始'

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 
+1

您沒有'from'子句。 'join'不像'union'和'union all'。它只能出現在'from'子句中。 –

+0

好吧,所以我已經試過編輯上述內容,但仍然沒有去...有什麼建議嗎? – daniness

+0

謝謝戈登和大家。事實證明,我對這個查詢採取了錯誤的做法......直到下一次。 :-) – daniness

回答

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 
+0

謝謝AJP,但我得到了更多的錯誤,所以我不得不作出一些更改,但仍然有問題: – daniness

+0

有什麼錯誤? – AJP

+0

Msg 102,Level 15,State 1,Line 12 '8'附近語法不正確。 Msg 156,Level 15,State 1,Line 41 關鍵字'as'附近的語法不正確。 – daniness

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 

不知道這樣做的影響是什麼,但如果你掙扎,可能值得一試。

+0

謝謝Scott Allen。事實證明,我對這個查詢採取了錯誤的做法......直到下一次。 :-) – daniness