Как я могу объединить несколько строк в одну строку (строку) - PullRequest
0 голосов
/ 21 мая 2018

У меня есть таблица, в которой есть несколько строк для каждой поездки.Каждые строки будут иметь разные значения флага в разных столбцах.Однако значение всегда равно «Y» или равно нулю.Я хочу объединить или сгруппировать все одну группу TRIP в одну строку, и в то же время значения флага должны быть сохранены.Ниже приведен пример: Left table to right table

Как мы видим, таблица слева (Таблица A) - это исходная таблица с ключами StaffNo, Trip и Doc.Однако я хочу удалить StaffNo и Doc из таблицы, чтобы они стали справа (Таблица B).

В таблице A (слева). Обратите внимание на поездку.Я хочу удалить Doc и StaffNo из таблицы A, но сохранив значение флага, посмотрите на строки с 1 по 3 в таблице A. Сравните значение флага в этих 3 строках с строкой 1. таблицы B *

Как мы видимЯ хочу, чтобы значение флага из нескольких строк, относящихся к одной и той же поездке, было объединено только в 1 строку.

Есть ли способ или обходной путь для этого?

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Если необходимо использовать sql, групповое отключение и max (флаг), буква больше пропущенного значения.

proc sql;
   select trip,max(flagA) as flagA,max(flagB) as flagB,max(flagC) as flagC,max(flagD) as flagD from have group by trip;
quit;
0 голосов
/ 21 мая 2018

Вы можете использовать инструкцию UPDATE, чтобы свернуть не пропущенные значения в строках.Оператору UPDATE требуется основной набор данных и набор данных транзакции.Для этой проблемы вы можете использовать свои данные для обоих.

data want ;
  update have(obs=0) have ;
  by trip ;
  keep trip flag: ;
run;
...