2016-07-13 11 views
-1

Ich habe eine Tabelle mit Adressen für Verträge und Kunden. Jede Adresse hat eine Spalte, die den Address (Vertrag oder Kunden) und eine weitere Spalte mit der Vertragsnummer oder mit der Kunden-NummerWÄHLEN Sie auf eine TABELLE mit WENN DANN

nun in der folgenden Art und Weise diese Tabelle wählen Ich möchte erklären. Abfrageparameter sind Vertragsnummer und die entsprechende Kundennummer

Bei vertrags Adressen eines bestimmten Auftrags-Nummer sind dann wählen sie , wenn es auch für diesen Vertrag Nummer und die entsprechende Kundennummer kunden- Adressen wählen sie nicht

Wenn für eine gegebene Vertragsnummer keine Vertragsadressen vorhanden sind, dann wählen Sie die Kundenadressen für die entsprechende Kundennummer.

Ich habe keine Ahnung, wie das geht. Möglich?

BR Eric

bearbeiten 2016.07.14:

Danach einige Klärung für das oben beschriebene Problem. Da ist die folgende Tabelle

CustomerID ObjectType ObjectID ADDR1 ADDR2 ADDR3 ..... 
10000  1   10000  ssdf 34543 dfgdf 
10000  1   10000  dfgg kjh  jkhjkh 
10000  2   23212  kljklj lkjlkj lkjlkj 
10000  2   23213  kljklj lkjlkj lkjlkj 
10001  1   10001  ssdf 34543 dfgdf 
10001  1   10001  dfgg kjh  jkhjkh 
10001  2   23212  kljklj lkjlkj lkjlkj 
10001  2   23213  kljklj lkjlkj lkjlkj 
10002  1   10001  ssdf 34543 dfgdf 
10002  1   10001  dfgg kjh  jkhjkh 

Wenn ich auf dieser Tabelle eine Auswahl kann ich nur die Datensätze mit Objecttype = 2 für jede CustomerID haben will.

Wenn keine Recordsets mit ObjectType = 2 vorhanden sind, muss die Auswahl alle Recordsets mit ObjectType = 1 zurückgeben.

Ich hoffe, jetzt ist es verständlich.

Zum Beispiel:

  • CustomerID = 10000 sollte zurückgeben 2 Datensätze für Objecttype = 2
  • CustomerID = 10002 sollte 2 Datensätze zurückgeben für Objecttype = 1

BR Eric

+0

es ist für MSSQL-2012 –

+0

Ja, das ist möglich. Wenn Sie eine detailliertere Antwort wünschen, müssen Sie weitere Details angeben. Hier ist ein großartiger Ort, um anzufangen. http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

+0

Bitte buchen Sie relevante Schemas – Nikki9696

Antwort

0

- 1. Erstellen Sie eine schnelle temporäre Tabelle

select CustomerID, max(ObjectType) into #MaxObjects from MyTable --Replace MyTable with whatever your table name is 

--2. Inner Join basierend auf dieser Tabelle auf Ihr Original.

select t1.* from MyTable as t1 

Exklusionsverknüpfung #MaxObjects als mo auf t1.CustomerID = mo.CustomerID und t1.ObjectType = mo.ObjectType