SAS 9,4
Пример набора данных
╔═════════╦═══════╦════════════╦══════════╗
║ subject ║ event ║ start_date ║ end_date ║
╠═════════╬═══════╬════════════╬══════════╣
║ s1 ║ e1 ║ 2-Mar-19 ║ 1-Jun-19 ║
║ s2 ║ e1 ║ 1-Mar-19 ║ 1-May-19 ║
╚═════════╩═══════╩════════════╩══════════╝
Ожидаемый результат:
╔═════════╦═══════╦════════════╦══════════╦════════════╗
║ subject ║ event ║ start_date ║ end_date ║ query_text ║
╠═════════╬═══════╬════════════╬══════════╬════════════╣
║ s1 ║ e1 ║ 1-Mar-19 ║ 1-Jun-19 ║ error? ║
║ s2 ║ e1 ║ 1-Mar-19 ║ 1-May-19 ║ error? ║
╚═════════╩═══════╩════════════╩══════════╩════════════╝
Я хочу вернуть все, которые имеют одно и то же «событие», и где «конечная дата» для одного с более ранней «начальной_ датой» больше, чем (>) «начальная_дата» для другого с более поздней начальной__ датой.
Здесь субъект 's2' имеет более раннюю 'start_date', чем 's1', но у 's2' более поздняя 'end_date', чем у 's1' 'start_date', поэтому эти два будут возвращены
Это то, что у меня есть до сих пор, но я не уверен, как сделать так, чтобы сравниваемые события имели одно и то же «событие»:
data Out_2;
/* set relevant dataset */
if input(compress(end_date,"/"), ??date9.) > input(compress(start_date,"/"), ??date9.);
/* do something */
run;
Спасибо