2017-05-18 5 views
-1

Ich lade drei Telefonnummern getrennt durch Pipe Delimiter zu einer Spalte in Teradata DWH.Entfernen von Trailing Pipe Delimiter und Pipe zwischen

  1. Wenn alle drei Telefonnummern für eine Zeile vorhanden sind, sollte der Wert wie folgt aussehen 123 | 456 | 789.
  2. Wenn die erste und die dritte vorhanden sind, dann 123 | 789
  3. Wenn erste und zweite als 123 | 456
  4. Wenn zweite und dritte vorhanden sind, dann 456 | 789.

Die Abfrage, die geschrieben wird, ist einige Probleme hat und wenn eine der Telefonnummern fehlen sagen, wenn die zweite Telefonnummer fehlt es ist es fehlende Werte wie diese 123 | | 789 oder wenn die dritte Telefonnummer speichert gibt .

Wir wollen kein Hinterrohr oder 2 Rohre dazwischen. Bitte schlagen Sie eine Teradata-Abfrage vor, um dies zu implementieren.

+0

Teilen Sie die Abfrage, die Sie bisher umgesetzt haben, so Vorschläge gemacht werden können, wo Sie falsch gemacht haben oder was verbessert werden kann. – xenodevil

+1

Was fehlt? NULL? leerer String? –

+0

Können wir einen Suchversuch von Ihnen, Sudarshan, sehen? Wir ermutigen Poster dazu, ihr Problem vor dem Posten zu testen. – halfer

Antwort

-1

Die Logik ist:

Zuweisen unterschiedlichen Gewichte zu jeder Spalte und dann gewichtete Summe der Länge aller Spalten 3 auszuwerten. Angenommen, jede Telefonnummer ist 10 Ziffern lang. Hier ist die Abfrage/Pseudocode.

Abfrage:

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

Warum werden Frage und Antwort abgelehnt? Sieht wie eine gültige Frage aus und stimmt irgendetwas mit der Logik nicht? – RKRC

+0

Wenn Menschen nicht angeben, warum sie heruntergeregelt haben, können wir nur raten. Meine Vermutungen würden sein, dass die Frage Null-Bemühung war, und es sieht so aus, als wäre sein Downvote verdient. Deine Antwort hat Upvotes angefordert, daher mag das ein Grund für deine Punktzahl sein. – halfer

Verwandte Themen