2017-05-18 21 views
-1

パイプ区切り記号で区切られた3つの電話番号をTeradata DWHの列にロードしています。末尾のパイプ区切り文字とパイプを削除する

  1. 3つの電話番号がすべて1つの行に存在する場合、値は のようになります。123 | 456 |
  2. 最初と3番目が存在する場合、123 | 789
  3. 最初と2番目が123より大きい場合| 456
  4. 2番目と3番目が存在する場合、456 | 789

書かれているクエリはいくつかの問題を持つと電話番号のいずれかの場合はされては、2番目の電話番号は、第三の電話番号は、それが欠落している場合、それはこの123 | | 789などの値を記憶している欠落している場合と言う欠けています123 | 456 |を与えています。

後続パイプまたは2つのパイプを間に置いてはいけません。これを実装するTeradataクエリを提案してください。

+0

提案はあなたが間違っていたか、改善することができるどのような場所に作ることができるので、あなたがこれまでに実施しているクエリを共有します。 – xenodevil

+1

「不足している」とは何ですか?ヌル?空の文字列ですか? –

+0

Sudarshanさんからの問い合わせがありますか?私たちは、ポスターを投稿する前に、ポスターの問題を本物の試みにすることを推奨します。 – halfer

答えて

-1

ロジックは次のとおり

は、各列に異なる重みを割り当て、次に、すべての3つの列の長さの加重和を評価します。各電話番号は10桁であると仮定します。ここにクエリ/擬似コードがあります。

問合せ:

Select 
case 1*LENGTH(firstCol)+2*LENGTH(secondCol)+4*LENGTH(thirdCol) 
when 70 then CONCAT(firstcol,'|', secondcol,'|', thirdCol) 
when 60 then CONCAT(secondcol, '|', thirdCol) 
when 50 then CONCAT(firstcol, '|', thirdCol) 
when 30 then CONCAT (firstcol, '|', secondcol) 
when 10 then firstcol 
when 20 then secondcol 
when 40 then thirdCol 
else null 
end 
from phoneNumbersTable 
+0

質問と回答の両方が下落しているのはなぜですか?有効な質問のように見えますが、ロジックに問題はありますか? – RKRC

+0

人々はなぜ彼らがdownvoted持って指定しない場合我々は推測することができます。私の推測では、その質問はゼロエアであると考えられ、そのように見えるのはそのダウンボートに値する。あなたの回答はアップヴォートを要請したので、あなたの得点の理由かもしれません - ここでの投票のリクエストはお断りします。 – halfer

関連する問題