Jeśli każde z zapytań zwraca tylko 1 wiersz, możesz użyć:
SELECT
(select Start_Date
from table1 where Start_Date not in (
select End_Date
from table1)
) AS StartDate,
(select End_Date from table1
where End_Date not in (
select Start_Date
from table1)
) AS EndDate
Jeśli Twoje zapytania zwracają więcej niż 1 wiersz, musisz wybrać inne rozwiązanie:
Możesz użyć UNION
:(Będziesz miał dwa zapytania źle wyrównane z "NULL" w drugiej kolumnie)
(select Start_Date, Null AS EndDate
from table1 where Start_Date not in (
select End_Date
from table1)
)
UNION
(select Null As StartDate, End_Date
from table1
where End_Date not in (
select Start_Date
from table1)
)
Możesz użyć JOIN
Jeśli masz pole do użycia jako „Dołącz”, możesz użyć tego pola, jeśli nie, możesz dodać pole do dołączenia (ale musisz sprawdzić zwracane dane, aby uniknąć błędów) Również musisz sprawdzić, jakiego rodzaju może być dołączenie dobre dla ciebie (Inner - Left - rigth)W tym przykładzie dodaję pole do przyłączenia i używam połączenia wewnętrznego:
SELECT Start_Date, End_Date
FROM
(select 1 as InnerId, Start_Date
from table1 where Start_Date not in (
select End_Date
from table1)
) As Tab1
INNER JOIN
(select 1 as InnerId, End_Date from table1
where End_Date not in (
select Start_Date
from table1)
) AS Tab2
USING(InnerId)