2014-05-22 73 views
1

有人可以幫助我與我的查詢下面?如何避免多個類別到一個sql記錄

  • 我收到相同的member_id有兩個不同的值在event_status_reason_desc列。
  • 我在列中的一行中出現'輸入錯誤',這是我想要的,但是
  • 我也在同一列中獲得NULL,但我不想要那個。

有人可以幫我嗎?

SELECT * 
FROM openquery(ccms_rpt, ' 
    select 
     a.member_id, b.member_first_name, b.member_last_name, a.event_type, 
     d.event_type_desc, a.event_date, a.authorization_number, g.refer_to_provider, 
     c.ccms_user_last_name, c.ccms_user_first_name, 
     case 
      when a.event_type = fe.event_type then (fe.event_status_reason_desc) 
      when a.event_type = ''04'' then(ge.event_status_reason_desc) 
     end as Event_Status_Reason_Desc 

    from ccmsdba_txc_prd.event a 
    join ccmsdba_txc_prd.member b 
     on a.member_id = b.member_id 
    join ccmsdba_txc_prd.ccms_all_users c 
     on a.ccms_id = c.ccms_id 
    join ccmsdba_txc_prd.zl_event_type d 
     on a.event_type = d.event_type 
    left join ccmsdba_txc_prd.event_admission f 
     on a.authorization_number = f.authorization_number 
    left join ccmsdba_txc_prd.event_referral g 
     on a.authorization_number =    g.authorization_number 
    left join ccmsdba_txc_prd.zl_event_status_reason fe 
     on f.event_status_reason = fe.event_status_reason 
    left join ccmsdba_txc_prd.zl_event_status_reason ge 
     on g.event_status_reason = ge.event_status_reason 

    where a.event_status = ''IP'' 
    and a.authorization_number = ''A170'' 
') 
+0

示例輸出與顯示的信息可以幫助 – xQbert

+0

不需要記錄它不會讓我張貼圖片。 –

+0

如果您可以在sqlfiddle.com上重新創建問題,我相信我們也可以將其解決。我認爲這是以下情況之一:1)源於不正確連接的數據(缺少連接標準)2)重複的數據存在於表中,您不期望導致第二條記錄出現;一個不受歡迎的案例類型。 a.event_Type不是04,也不等於fe.event_Type。你可能想添加一個'else'然後'X'來查看它是否是問題。 – xQbert

回答

0

假設你只有兩個問題:
1.您對 「 authorization_number」 內 「 event_admission」 或 「 event_referral」 表中重複的記錄。或者您有「 zl_event_status_reason
event_status_reason」的副本您必須清理數據或使用子查詢來獲取不同的值。

  • 你正在列「進入08錯誤」在一行...
    你沒有指定的列,但假設你沒有在列空。
    最有可能的是,您只是在其中一個LEFT連接表中沒有相應的記錄。
    如果您確實需要LEFT加入並且不需要NULL,您可以使用ISNULL函數。事情是這樣的:

    ISNULL([我的專欄],「不爲空值」)