2016-06-13 29 views
0

Ich habe eine gespeicherte Prozedur, wo ich unter zwei Tabellen bin mitNur erste Zeile aus dem Ergebnis kommt

Ticket Nav Group(Table) - 

Column: 

Ticket Type ID 
Ticket Nav Group Id 

Ticket Sorting(Table) - 

Column : 

Ticket TypeId, 
Nav GroupId, 
Priority 

ich inneren tat zwischen diesen Tabellen verbinden. mit Ticket-Typ-ID

Da die Ticket-Typ-ID und Navgroup-ID und Priorität ist anders, habe ich einige doppelte Zeile gefunden.

Jetzt ist meine Anforderung, ich muss nur die erste übereinstimmende Zeile aus diesem Ergebnis für jede Tickettyp-ID auswählen.

Außerdem glaube ich, muß Ticket-Typ Id und Priorität im Ergebnis

+0

Ist es DISTINCT, nach dem Sie fragen? –

+0

versuchen Sie mit row_number, partition.google it.learn – KumarHarsh

+0

Verwenden Sie Top 1 * in Select Query erhalten Sie die erste Zeile Ihres Ergebnisses einfach – Ajay2707

Antwort

0

Wenn Sie mehrere Ticket TypeId in der zweiten Tabelle haben, können Sie wie folgt verbinden:

Select 
    a.[Ticket Type ID], a.[Ticket Nav Group Id], b.[Priority] 
FROM 
    [Ticket Nav Group] a 
INNER JOIN (
      SELECT [Ticket TypeId], MAX([Priority]) 
      FROM [Ticket Sorting] 
      GROUP BY [Ticket TypeId] 
     ) b 
     ON b.[Ticket TypeId] = a.[Ticket Type ID] 

und wenn ich richtig verstehe, ich glaube, Sie einen Tisch Design-Problem haben.

0

Obwohl Sie sind nach einer Lösung für Ihre Abfrage angezeigt I sollten Sie Ihre DB-Struktur zurückgehen und neu zu bewerten.

Mit dieser Struktur:

Ticket Nav Group(Table) - 
{ 
Ticket TypeID 
Ticket NavGroup Id 
} 

Ticket Sorting(Table) - 
{ 
Ticket TypeId, 
Nav GroupId, 
Priority 
} 

Sie nur die zweite Tabelle haben soll. Andernfalls duplizieren Sie Daten.

Bitte geben Sie weitere Details zu Ihrer Datenbankstruktur an. Sei auch klarer in deiner Frage und Struktur. Ist TypeId ein Fremdschlüssel aus einer Type-Tabelle? Warum hast du es in zwei Worten in der ersten Tabelle und zusammen in der zweiten Tabelle buchstabiert?

+0

Wir haben nichts wie Fremdschlüssel. Der Spaltenname ist nur TicketTypeId ... ich habe es einfach als zwei Diff-Wörter geschrieben, um die Lesbarkeit zu verbessern. –

+0

Wenn Sie nur den Tickettyp Id und Priorität im Ergebnis anzeigen müssen. Lets betrachten Sie das mit der höchsten Priorität angezeigt werden soll: \t wählen typeid, max (agreagator) \t [aus, schließt sich und die Bedingungen hier] \t Gruppe von typeid – Cleriston