Mam bardzo prostą tabelę (dla celów demonstracyjnych)Czy mogę poprawić to zapytanie?
CREATE TABLE t1 (id int,d1 date);
i tej kwerendy.
SELECT
A.id,
minA,
minB
FROM (SELECT id, MIN(d1) AS minA
FROM t1
GROUP BY id) AS A
LEFT JOIN (SELECT C.id, MIN(C.d1) AS minB
FROM t1 AS C
INNER JOIN (SELECT id, MIN(d1) AS minD
FROM t1
GROUP BY id) AS D ON C.id = D.id AND C.d1 > D.minD
GROUP BY C.id) AS B ON A.id = B.id
Zasadniczo staram się uzyskać dwa „dolna” wartości dat dla każdego identyfikatora w rzędzie, z wartością null, jeśli istnieje tylko jeden termin ID. Powyższe zapytanie działa, ale musi być lepszy/czysty sposób, aby to zrobić, którego po prostu nie widzę. Używam programu SQL Server 2008, jeśli to ma znaczenie.
próbowałem robić coś bardzo podobnego, ale z jakiegoś powodu moja pivot zmusiło mnie do końca się z nimi wiersze dla każdego identyfikatora. Wiersz 1 miałby identyfikator i pierwszą datę (druga data byłaby zerowa), a wiersz 2 miałby identyfikator i drugą datę (pierwsza kolumna null). Dzięki za to rozwiązanie! – Crag
@Crag Jesteś mile widziany, cieszę się, że zadziałało. – Taryn
@YatinSaraiya: Jeśli nie możesz bronić swojego punktu, nie ma to większego znaczenia. – Ryan