0

放棄されたコールのディメンション テーブルには、ID 1 コード NO 、ID 2 コード YES があります。結合を使用してコールが放棄されたかどうかに基づいて、これらの ID をファクト テーブルにロードしたいと考えています。

データベースの Abandoned 値が NO の場合は NULL、YES の場合は 1 であるという問題があります。

だから参加したら

 INNER JOIN datamartend.dbo.Abandoned_Call_Dim 
         ON incoming_measure.Abandoned = Abandoned_Call_Dim.abandoned_code

結果が出ない?

これに関するアイデアはありますか?

基本的に必要なものは次のとおりです。

メジャーの放棄値が null の場合は放棄ディメンションの放棄 ID を 2 にし、null でない場合は放棄 ID を 2 にしたい

ありがとう

4

2 に答える 2

0

Can you check whether it is possible for you to use Decode function for the ID before doing Join.

Decode(value) = joining column

or try using COALESCE(REPLACE(COL, VAL_TO_B_REPLACE_IF_NOT_NULL), VALUE_TO_REPLCE_WHEN_NULL)

于 2013-04-02T11:13:28.310 に答える
0

これを回避するには、CASE WHEN 句を使用できます (または ISNULL ですが、異なる DB エンジン間での移植性が高い場合)。

 INNER JOIN datamartend.dbo.Abandoned_Call_Dim 
         ON case when incoming_measure.Abandoned is null then '0' 
                 else  incoming_measure.Abandoned end 
          = case when Abandoned_Call_Dim.abandoned_code is null then '0' 
                 else Abandoned_Call_Dim.abandoned_code end 

これにより、null が 0 に置き換えられます。コードが 0 でない限り、問題ありません。その場合は、-1 を試すか、コードの可能なセットにないことがわかっている他の値を試してください。

コードのセットが不明な場合に行う別の方法は、結合して追加することです。

 OR (incoming_measure.Abandoned is null and Abandoned_Call_Dim.abandoned_code is null)

これは技術的には結合しません - null レコードを交差結合します (そして、放棄された呼び出しの薄暗い上で重要な null が 1 つしかない限り、問題ありません)。

于 2013-03-29T11:22:19.817 に答える