2016-10-13 6 views
1

ich die Tabellenwerte wie unten haben,SQL-Abfrage für die Gruppe von

seqno,bill_no,bill_seq,first_name,last_name,phone_number,inserted date 
1 11 1 KUTH MUT1 96290 11-OCT-16 
2 12 2 KUTH MUT1 2 11-OCT-16 
3 13 3 KUTH MUT1 3 11-OCT-16 
4 14 4 KUTH MUT1 4 11-OCT-16 
5 15 5 KUTH MUT1 5 11-OCT-16 
6 16 6 KUTH MUT1 6 13-OCT-16 
7 17 7 KUTH MUT1 96290 13-OCT-16 
8 18 8 KUTH MUT1 8 13-OCT-16 
9 19 9 KUTH MUT1 9 13-OCT-16 
10 20 10 KUTH MUT1 96290 13-OCT-16 

erwartete Ausgabe:

  1. basierend auf Telefonnummer sollte Gruppe
  2. es auf min seq_number basierend sortieren sollte und Rufnummerngruppe Kombination.
  3. Die alten Datumszeilen kommen immer zuerst, zum Beispiel wird der Seqno 1 auf 11-okt eingefügt, aber 7 und 10 werden auf 13-okt eingefügt, aber das Ergebnis beginnt ab minimalem seqno und altem Datum für eine Gruppe von Telefon und für eine seqno 2 sollte es für jede neue Datum Zeile suchen Telefonnummer entspricht oder nicht, wenn nicht übereinstimmend dann Sequenz 2 .. es wird auch für andere Zeilen fortsetzen.
1 11 1 KUTH MUT1 96290 11-OCT-16 
7 17 7 KUTH MUT1 96290 13-OCT-16 
10 20 10 KUTH MUT1 96290 13-OCT-16 
2 12 2 KUTH MUT1 2 11-OCT-16 
3 13 3 KUTH MUT1 3 11-OCT-16 
4 14 4 KUTH MUT1 4 11-OCT-16 
5 15 5 KUTH MUT1 5 11-OCT-16 
6 16 6 KUTH MUT1 6 13-OCT-16 
8 18 8 KUTH MUT1 8 13-OCT-16 
9 19 9 KUTH MUT1 9 13-OCT-16 

Antwort

0

Obwohl es nicht ganz klar, wenn Sie für 2 Abfragen oder 1 suchen, aber ich denke, das ist das, was Sie suchen:

select 
    seqno, bill_no, bill_seq, first_name, last_name, phone_number, inserted date 
from 
    table 
group by 
    phone_number, seqno, bill_no, bill_seq, first_name, last_name, inserted date 
order by 
    phone_number, seqno asc 
+0

Ich erwarte eine einzelne Abfrage. Tatsächlich werden die Daten jeden Tag mit neuer Sequenznummer eingefügt. Die Idee hier ist, in der ersten Zeile ein altes Datum mit einer Telefonnummer einzufügen und wenn die neue Datumszeile dieselbe Zeile hat, sollte sie neben der alten Datumszeile stehen. – googly

+0

Ich denke, dass die vorgeschlagene Abfrage das tut. – Sebz

1
SELECT seqno,bill_no,bill_seq,first_name,last_name,phone_number,inserted date 
FROM (
    SELECT seqno,bill_no,bill_seq,first_name,last_name,phone_number,inserted date 
    , ROW_NUMBER() OVER (PARTITION BY phone_number ORDER BY seqno) AS rank 
    FROM table) 
ORDER BY phone_number,rank 
0

Wollen Sie Reihenfolge zuerst alle Reihe nach Mindestwert von seq_number auf jeder Telefonnummer Gruppe und danach von insert_date innerhalb jeder Gruppe?

Dann denke ich, das wird es tun:

SELECT seqno, bill_no, bill_seq, vorname, nachname, phone_number, inserted_date FROM ( SELECT seqno, bill_no, bill_seq, vorname, nachname, phone_number, inserted_date , MIN (seqno) OVER (PARTITION NACH phone_number) AS minimum FROM tabelle1) X ORDER BY minimum, eingefügtes_datum

+0

Es hat gut funktioniert. Danke für deine Zeit – googly

Verwandte Themen