Próbuję zamówić konkretne zapytanie, biorąc pod uwagę następne i poprzednie rekordy, ale nie mogę tego zrobić. Chciałbym zamówić przez liczbę i literę, ale jeśli, na przykład, ostatnia litera z numerem 1 jest równa jednej z liter numeru 2, chcę zmienić kolejność, tak aby list pasował do następujących rekord.Sortowanie w oparciu o kolejne i wcześniejsze rekordy w SQL
Create script and SQL fiddle demo
create table Parent (
id [bigint] IDENTITY(1,1),
number bigint NOT NULL,
PRIMARY KEY (id)
)
GO
create table Child (
id [bigint] IDENTITY(1,1),
parentId BIGINT,
letter VARCHAR(1) NOT NULL,
PRIMARY KEY (id),
UNIQUE (parentId, Letter),
FOREIGN KEY (parentId) REFERENCES Parent(id)
)
GO
INSERT Parent (number) VALUES (1)
INSERT Parent (number) VALUES (2)
INSERT Parent (number) VALUES (3)
INSERT Child (parentId, letter) VALUES (1, 'A')
INSERT Child (parentId, letter) VALUES (1, 'C')
INSERT Child (parentId, letter) VALUES (2, 'B')
INSERT Child (parentId, letter) VALUES (2, 'C')
INSERT Child (parentId, letter) VALUES (3, 'B')
INSERT Child (parentId, letter) VALUES (3, 'D')
Aktualny zapytania
Obecnie jestem sortowaniu z tego zapytania:
SELECT P.number, C.letter
FROM Child C
JOIN Parent P ON C.parentId = P.id
ORDER BY P.number, C.letter
Aktualny wynik ustawić
number letter
-------------------- ------
1 A
1 C
2 B
2 C
3 B
3 D
Oczekiwany wynik ustawić
Aby wyjaśnić, co tak naprawdę chcesz zrobić, jest tu oczekiwany zestaw wyników (z C do B numer 2 przełączane).
number letter
-------------------- ------
1 A
1 C
2 C --switched
2 B --switched
3 B
3 D
Inne wymagania i pytanie
- Ma pracować w SQL Server 2005.
- Istnieje scenariusz, w którym używane są 3 litery na cyfrę, cieszę się, jeśli po prostu używa najlepszego dopasowania.
- Właściwie interesuję się również rozwiązaniami do późniejszych wersji SQL Server (do nauki), ale te nie odpowiadają na moje pytanie.
Czy ktoś może wskazać mi właściwy kierunek postępowania?
Proszę zobaczyć to pytanie dla nowego scenariusza, który przyszedł mi do głowy, przez komentarze na zaakceptowanej odpowiedzi: http://stackoverflow.com/questions/30480504/complex-sorting-based-on- next-and-previous-records-in-sql –