2017-12-07 13 views
0

Joinでcase関数を使用しようとしていて、クエリを実行できませんでした。 私は間違っていますか?参加時に使用するケース

left join vortex_dbo.vw_public_material_history on 
CASE 
WHEN vw_public_request_material_location_mir.material_request_id = (substring(vw_public_material_history.comments,12,6)) 

then vw_public_request_material_location_mir.material_request_id 
else null 
end 

私は何を取得したいことは、私は「とき」

が、私はここで何かを欠場感じるから「真」を持っている場合にのみ行を結合です。

+0

代わりに 'AND' /' OR'を使用して 'case'式をスキップしてください! – jarlh

答えて

0

CASEの表現は意味がありません。 A CASE式の結果は、たとえば、material_request_idのような値になります。したがって、文字列一致の場合は

left join vortex_dbo.vw_public_material_history on material_request_id 

の場合は取得します。あなたはこのON句が不完全であることに気づくでしょうか?あなたのデータモデルとして

from vw_public_request_material_location_mir mir 
left join vortex_dbo.vw_public_material_history hist on 
    mir.material_request_id = (substring(hist.comments,12,6)) 

あなたはおそらく、テーブルの別名で、より良い読んでいました

left join vortex_dbo.vw_public_material_history on 
    vw_public_request_material_location_mir.material_request_id = 
    (substring(vw_public_material_history.comments,12,6)) 

を探しているあなたが、文字列の中に隠さIDを持っていることを奇妙に思えます。あなたのテーブルデザインを再検討したいかもしれません。

+0

ありがとうございます、あなたの助けのために、私は示唆したように左の結合を実行しようとしましたが、次のエラーが表示されます。 "varchar値 'tem'をデータ型intに変換すると変換に失敗しました。 「コメント」のデータには文字と数字が含まれており、数字だけが抽出されます。 – Avi22

+0

明らかにそうではありません。それは数字ではない文字列 'term'を抽出しているようです。 –

+0

私はここに別の問題があると思います。私がコメントしたデータのほとんどは、この "yar per MIR#332166 | Yaniv"のように見えますが、文字だけを含む行もあります。どのようにこれを超えてどのようなアイデア? – Avi22

関連する問題