Разделить столбец по значениям на новые столбцы SQL - PullRequest
1 голос
/ 24 сентября 2019

Я пытаюсь изучить SAS и хочу разделить разные строки таблицы на разные столбцы, чтобы сгруппировать данные.

А именно,

Таблица подробна

Num    Date   Type Amount    
A1  6/12/2018 Merc   5    
A2  7/3/2014  Merc   10    
A2  6/5/2014  Merc   6    
A2  6/5/2014  Cong   15
A3  5/6/2020  Cong   30   
A4  7/8/2019  Cong   6     
A3  5/6/2020  Fres   7
A4  7/8/2019  Fres   9

и я хочу преобразовать в эту таблицу

Сводка таблицы

Num    Date   Merc Cong Fres    
A1  6/12/2018  5   
A2  7/3/2014   10    
A2  6/5/2014   6    15   
A3  5/6/2020        30   7  
A4  7/8/2019        6    9     

Разработан этот запрос, но он не работает.

PROC SQL;
   CREATE TABLE WORK.Summary AS 
   SELECT t1.Number, 
          t1.Date, 
          t1.Type, 
          (case when t1.Type='Mercearia' then t1.Type) as Merc,
          (case when t1.Type='Congelado' then t1.Type) as Cong,
          (case when t1.Type='Fresco' then t1.Type) as Fres,
      FROM WORK.Detailed t1
END    

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 24 сентября 2019

Попробуйте вместо этого использовать ПРОЦЕСС.Он динамический, поэтому вам не нужно заранее знать количество типов.

proc sort data=detailed; by number date;

proc transpose data=detailed out=Summary;
by number date;
id type;
var amount;
run;
1 голос
/ 24 сентября 2019

Вы рядом.Вам нужно агрегировать и исправить какой-то другой синтаксис:

SELECT d.Number, d.Date, 
       MAX(case when d.Type = 'Mercearia' then d.Amount end) as Merc,
       MAX(case when d.Type = 'Congelado' then d.Amount end) as Cong,
       MAX(case when d.Type = 'Fresco' then d.Amount end) as Fres
FROM WORK.Detailed d
GROUP BY d.Number, d.Date;
...