Supponiamo che ho una tabella composta da voci comeSQL sé unirsi a coppie
ID Arrival Date Arrival City Departure Date Departure City
1 Jun 27 2015 Berlin Jun 20 2015 Paris
1 Jul 1 2015 Rome Jun 29 2015 Berlin
1 Jul 30 2015 Vienna Jul 15 2015 Rome
2 Jun 28 2015 Prague Jun 23 2015 Vienna
2 Jul 1 2015 Rome Jun 29 2015 Prague
2 Jul 30 2015 Vienna Jul 15 2015 Moscow
...
e per ogni ID voglio partecipare a questo i dati su se stessa in modo tale che le osservazioni con successiva Departure Date
e Arrival Date
sono raggruppati a coppie - vale a dire un partenza è abbinato all'arrivo precedente per ogni ID.
Nell'esempio sopra (dove le osservazioni sono ordinate per comodità) la seconda riga verrebbe aggiunta al 1 °, al 3 ° al 2 °, al 5 ° al 4 ° e al 6 ° al 5 ° (producendo così 4 righe con campi ID Arrival Date Arrival City Departure Date Departure City Arrival Date2 Arrival City2 Departure Date2 Departure City2
).
Potrebbero esserci potenzialmente più di tre partenze per ogni ID, quindi è necessario un approccio generale. Tieni presente che potrebbero esserci buchi nei dati in cui Arrival City
e Departure City
non corrispondono - ad es. il Arrival City
della quinta riga non è il Departure City
della sesta riga, ma dovrebbero essere ancora uniti. In effetti, uno degli obiettivi principali è ottenere una visione migliore di quanti buchi ci siano nei dati.
, la prego di mostrare ciò che il vostro risultato atteso dovrebbe essere simile? –
"Potrebbero esserci potenzialmente più di tre partenze per ciascun ID, quindi è necessario un approccio generale" ogni particolare query produce set di risultati con una "forma" fissa: il numero, i nomi e i tipi delle colonne. Ma sembra che tu stia chiedendo una query che produce un numero diverso di colonne a seconda dei dati di input (e anche, cosa succede quando ID diversi hanno numeri diversi di partenze?). Potrebbe essere preferibile eseguire questo tipo di elaborazione di output a un livello superiore rispetto a SQL. –
Qual è la versione di SQL Server? Si prega di aggiungere il tag corrispondente alla domanda invece di 'join'. Inoltre, in base ai dati di esempio, mostra come dovrebbe apparire il risultato finale. –