Получение дублированных значений в SAS, несмотря на использование различных, как я могу удалить их? - PullRequest
0 голосов
/ 16 октября 2018

OUTPUT OF CODE ПРОГРАММА (добавление двух таблиц и сохранение их в более поздней):

proc sql;
   create table tdstagng.aa as
   select distinct * from tdstagng.aa
   outer union corr
   select distinct * from WORK.DYNAMIC
   ORDER by Cdate;`
quit;

ВЫХОД

Это изображение является выводом кода, Cdate - это столбец, который выбирает текущую дату.) Цель программы - создать исторические данные, чтобы пометить изменения во времени.

В дате 15.10.18 есть повторяющиеся значения даже во всей строкето же самое (вместо 7 строк на эту дату 14 строк), как мне от этого избавиться?Я пометил стрелками дублированные строки.

Ответы [ 3 ]

0 голосов
/ 16 октября 2018
proc sql;
   create table tdstagng.aa as
   select distinct * from tdstagng.aa
   union
   select distinct * from WORK.DYNAMIC
   ORDER by Cdate;
quit;

Попробуйте удалить внешний и CORR.

0 голосов
/ 16 июля 2019

Какой формат даты в колонке CDate?Это может быть связано с форматом ДД / ММ / ГГГГ ЧЧ: ММ - в исходном значении даты скрыто время;

Если это так, вы можете определить вычисляемый столбец с помощью функции datepart(CDate) - этосохраняет только дату из значения datetime

0 голосов
/ 16 октября 2018

Вы выбрали два отдельных набора, а затем объединили их вместо простого объединения.Именно это приводит к дублированию строк.

Вы пытались удалить ключевое слово outer?Вот пример использования данных SASHELP.CLASS.

23   proc sql ;
24   create table test1 as
25   select * from sashelp.class where name like 'A%'
26   union corr
27   select * from sashelp.class where sex = 'F'
28   ;
NOTE: Table WORK.TEST1 created, with 10 rows and 5 columns.

29   create table test2 as
30   select * from sashelp.class where name like 'A%'
31   outer union corr
32   select * from sashelp.class where sex = 'F'
33   ;
NOTE: Table WORK.TEST2 created, with 11 rows and 5 columns.

Или создание подзапроса?

45
46   create table test3 as
47   select distinct * from
48   (
49   select * from sashelp.class where name like 'A%'
50   outer union corr
51   select * from sashelp.class where sex = 'F'
52   )
53   ;
NOTE: Table WORK.TEST3 created, with 10 rows and 5 columns.
...