2017-03-08 20 views
1

これは私の最初の質問です!申し訳ありませんが、SQLのスキルは非常に限られています。私は主にTableauを使用しますが、TableauでカスタムSQL結合を作成する必要があります。テーブル内の値を置き換えて別のテーブルに結合する

"注文"フィールド(両方のテーブルにあります)と "プレフィックス"フィールド(Cテーブルにしかありませんが、値を変更しようとしています)で結合する必要のある2つのテーブル(CテーブルとPテーブル) Pテーブルの "contract"フィールドを使用して結合を行います)。変更する必要があるのは2つの値だけです。

これらの値が変更されると、ContractからPテーブルをPrefixに結合することができます。この場合、Contract = "1234"は "ABC"に変更されます。 C表から、私はこれより良いの説明couldntのが、のような、私はSQLで非常に限られた経験を持っていると述べた任意の助けをいただければ幸いです

答えて

1

サブクエリで実行できます。

select * 
    from C 
    inner join (
     select *, 
       case contract when 1234 then ABC 
           when 5678 then XYZ 
           else contract 
       end as changed_contract -- or whatever name you like 
      from P 
    ) P on P.changed_contract = C.prefix 
     and P.orders = C.orders 

サブクエリ内のテーブルは、あなたが行った変更をアカウントに取り込む新しいフィールドを含む、Pからのすべてのフィールドを提供します。次に、その新しいフィールドに参加し、selectステートメントを変更して、必要なフィールドを取得します。

+0

ありがとうエドワードこれは完全に働いた! – Rosadocc

+0

あなたは大歓迎です:) – KindaTechy

0

あなたが特定の値のためcontractを変更するcaseを使用することができますよう

申し訳ありません。。!。:

select prefix + ' ' + case contract 
     when '1234' then 'ABC' 
     when '5678' then 'XYZ' 
     else contract 
     end as prefix_plus_contract 
,  * 
from c 
join p 
on  c.orders = p.orders 
関連する問題