2016-09-30 5 views
0

Ich habe eine Tabelle, die ich versuche, gegen sich selbst zu entsprechen und einen Datensatz erstellen, wenn der Primärschlüssel nicht übereinstimmt. Hier ist ein Beispiel der TabelleSpotfire zu unübertroffenen Aufzeichnungen

Location Value 
A  5 
B  10 
C  15 

ich die folgende Tabelle

Location Value Location(2) Value(2) 
A   5  B  10 
A   5  C  15 
B   10  A  5 
B   10  C  15 
C   15  A  5 
C   15  B  10 

ich dupliziert haben die erste Tabelle erhalten möchten, und versucht die verschiedenen schließt sich, aber ich kann nicht das Ergebnis erhalten. Kann jemand einen Vorschlag machen, wie dies durchgeführt werden kann?

+0

@ cookiemnstr247- ist der Primärschlüssel ‚Location‘? Was meinst du damit, den Tisch gegen sich selbst zu setzen? Könntest du bitte mehr erklären? – ksp585

+0

Das ist richtig, Location ist der Primärschlüssel. Ich meinte, dass ich meine anfängliche Tabelle nahm, duplizierte und dann versuchte, "Einfügen" -> "Spalten", übereinstimmend auf dem Standortfeld und probiere jede Join-Methode, mit zwei Instanzen der gleichen Tabelle. – cookiemnstr247

Antwort

2

Sieht aus wie Sie das Vektorprodukt heißt äußeren beitreten möchten. Um eine Verbindung herzustellen, benötigen Sie eine Spalte mit übereinstimmenden Zeilen. Ein Trick hier wäre, eine neue Spalte mit nur einem einzigen Wert wie "1" für alle Zeilen zu erstellen (verwenden Sie "Berechnete Spalte einfügen" - stellen Sie sicher, dass Sie die Spalte einfrieren, damit Sie später dazukommen können). Führen Sie dann einen vollständigen äußeren Join dieser Tabelle mit einer Kopie von sich selbst aus (verwenden Sie die Funktion "Spalten einfügen" für den Join), indem Sie die Spalte mit dieser Dummy-Spalte als Schlüsselfeld verwenden. Sie erhalten dann die Kombinationen, die Sie oben gezeigt haben, aber es wird auch Zeilen haben, in denen die Schlüssel übereinstimmen.

die Spiele zu entfernen, Sie leicht eine neue Spalte mit einem Ausdruck die Prüfung, ob die Primärschlüssel übereinstimmen wie erstellen:

if([Location]=[Location(2)],"Match","NoMatch") 

filtern dann mit den entsprechenden Zeilen und löschen, wenn sie nicht wollen, in der Datensatz.

Sie können sicherlich Fragen hier Spotfire fragen, aber Sie können auch die Spotfire Abschnitt der TIBCO Gemeinschaft versuchen hier:

https://community.tibco.com/products/spotfire

+0

Sehr cool, danke! – cookiemnstr247

+0

Warum konnten Sie nicht beitreten wo 1 = 1 oder wo eine Spalte <> colimn2? – scsimon