2017-08-03 23 views
0

は、私は問題は、私は別名 'Client_Account'SQL JOIN - エイリアスを使用して、列にアクセスできません。 /無効バインドできませんでした列

  • 無効を使用することはできません

    • に参加2回目である次の例

      SELECT  
           a.PATIENT_ACCOUNT_NUMBER AS Account, 
           a.Payment AS Collection, 
           CONCAT(c.FacilityCode, a.PATIENT_ACCOUNT_NUMBER) AS Client_Account, 
      
      FROM TEMP_TABLE_2 a 
      LEFT JOIN denial_table d ON a.PATIENT_ACCOUNT_NUMBER= d.account_number 
      
      --Issue here 
      INNER JOIN events_table e ON Client_Account = e.fk_Account 
      -- 
      
      INNER JOIN flist_table b ON a.FACILITY_CODE = b.client_facility 
      INNER JOIN ref_f_table c ON c.ID = b.fk_facility_id 
      

      を持っています列名

  • 私はCONCAT(c.FacilityCode、a.PATIENT_ACCOUNT_NUMBER) マルチパート識別子が私はCONCAT(c.FacilityCodeにアクセスするにはどうすればよい

をバインドすることができませんでした

  • を使用することはできません
  • 、a.PATIENT_ACCOUNT_NUMBER)の2回目の参加?あなたは完全な表現(エイリアスではなく)を使用する必要があるT-SQL

+1

a、b、cよりも良いエイリアスを使用することをお勧めします。それは、うまく動作する悪夢です。 http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-table-aliases-like-abc-or-t1-t2-t3.aspx –

+0

あなたが必要です論理的な順序の代わりにTSQLの実際の実行順序を知るために – LONG

+0

@SeanLangeはい、それらは実際のエイリアスではありません。またはテーブル名。私は、より良いものを使用することができた疑いがあると思います。 – user8162361

答えて

2

を使用して

正しい順序でテーブルを置く:利点として

SELECT a.PATIENT_ACCOUNT_NUMBER AS Account, a.Payment AS Collection, 
     CONCAT(c.FacilityCode, a.PATIENT_ACCOUNT_NUMBER) AS Client_Account, 
     . . . 
FROM TEMP_TABLE_2 a INNER JOIN 
    flist_table b 
    ON a.FACILITY_CODE = b.client_facility INNER JOIN 
    ref_f_table c 
    ON c.ID = b.fk_facility_id INNER JOIN 
    events_table e 
    ON CONCAT(c.FacilityCode, a.PATIENT_ACCOUNT_NUMBER) = e.fk_Account LEFT JOIN 
    denial_table d 
    ON a.PATIENT_ACCOUNT_NUMBER= d.account_number 

、私はそれだと思いますLEFT JOINの前にINNER JOINを入れておくとよいでしょう。 ON句でNULL -key(不一致の行から)が誤って使用されていないことを確認するのに役立ちます。

+0

ああ、テーブルの順序が重要です。私はあなたに何が起こるかを知らせます。 – user8162361

+0

願い私は答えがいかに単純かを知っていた。ご協力ありがとうございました! – user8162361

関連する問題