2012-03-30 21 views
1

以下に示すように、3番目のテーブル "テーブルC"の一致するレコードに対して1つの値のみを取得するための適切なSQLの作成については助けてください。表Aに、顧客のID、名前、および状態を示します。表Bには、外国キー顧客IDとメンバーカード番号が記載されています。表Cに会員カード番号の売上を示します。A、B、別個のCのSQL結合

select A.cifno, A.cfna1, A.cfstate, B.hbmast.cifno, B.hbmast.hbcid, C.cast(ewmast.ewcid as dec(12,0)) as "eWire ID" 
from library.cfmast cfmast join library.hbmast hbmast 
on cfmast.cfcif# = hbmast.cifno left join library.ewmast ewmast 
on hbmast.hbcid = cast(ewmast.ewcid as dec (12,0)) 

サンプルデータ:

table A 
**A.cifno, A.cfna1, A.cfstate** 
J00022, John, OH 
B00019, Ben, TX 


table B 
**B.hbmast.cifno, B.hbmast.hbcid** 
J00022, 5555000
B00019, 555500007878 


table C 
**ewmast.ewcid** 
5555000
5555000
5555000
555500007878 

所望の出力は次のようになります。

J00022, John, OH, J00022, 5555000, 5555000
B00019, Ben, TX, B00019, 555500007878, 555500007878 

- NOT -

J00022, John, OH, J00022, 5555000, 5555000
J00022, John, OH, J00022, 5555000, 5555000
J00022, John, OH, J00022, 5555000, 5555000
B00019, Ben, TX, B00019, 555500007878, 555500007878 
+3

あなたがDISTINCT' '聞いていましたか? – Kayser

答えて

3

あなたの選択にキーワードdistinctを使用する必要があります。

すなわち、のようなもの:左手に

select distinct .... 
+0

ありがとうございました。私はそこに日付形式のステートメントがありました。それによって、別個のものが常にエラーをスローし、削除され、すべてがより良くなりました。 日付(数字(datfld7))を "新しい日付" – macunte

1

あなたはDISTINCT演算子

を使用することができます
SELECT DISTINCT * 
FROM YOURTABLE 
1

表Cに参加し、あなたは「nullでない」条項を置きたいと思うでしょう。これにより、一致する行のみが表示され、そうでない場合は無視されます。ただ言って。

2

出来上がり...

select DISTINCT A.cifno, A.cfna1, A.cfstate, B.hbmast.cifno, B.hbmast.hbcid,   C.cast(ewmast.ewcid as dec(12,0)) as "eWire ID" 
from library.cfmast cfmast join library.hbmast hbmast 
on cfmast.cfcif# = hbmast.cifno left join library.ewmast ewmast 
on hbmast.hbcid = cast(ewmast.ewcid as dec (12,0)) 
関連する問題