Я использую SAS EG для этого. Это входная таблица, которая у меня есть:
ref11 ref2 Col1 Col2 Col3 Col4 Col5 Col6
A B 41 42
D E 63 65 68
X Y 23 25 55 89 99
K L 12 22
U V 22 88 11
Я пытаюсь получить вывод как
R1 R2 C1 C2 C3 C4 C5 C6
A B 41 42
D E 63 65 68
X Y 23 25 55 57 89 99
K L 12 22
U V 22 88 11
поэтому в основном моя ссылка - ref1 и ref2, и я хочу избавиться от пробелов для каждой ссылки. Например, для A B столбец col2 пуст, поэтому значение столбца 3 должно быть перемещено в столбец 2.
это код, который у меня есть прямо сейчас.
PROC SQL;
CREATE TABLE output AS
SELECT ref1 as R1,
ref2 as R2,
(CASE WHEN col1 <> '' THEN col1 ELSE (CASE WHEN col2 <> '' THEN col2 ELSE (CASE WHEN col3 <> '' THEN col3 ELSE
(CASE WHEN col4 <> '' THEN col4 ELSE (CASE WHEN col5 <> '' THEN col5 ELSE (CASE WHEN col6 <> '' THEN col6 ELSE '' END)
END) END) END) END) END) AS C1,
(CASE WHEN col2 <> '' AND col1 <> '' THEN col2 ELSE (CASE WHEN col3 <> '' THEN col3 ELSE
(CASE WHEN col4 <> '' THEN col4 ELSE (CASE WHEN col5 <> '' THEN col5 ELSE (CASE WHEN col6 <> '' THEN col6 ELSE '' END)
END) END) END) END) AS C2,
(CASE WHEN col3 <> '' AND col2 <> '' AND col1 <> '' THEN col3 ELSE (CASE WHEN col4 <> '' THEN col4 ELSE
(CASE WHEN col5 <> '' THEN col5 ELSE (CASE WHEN col6 <> '' THEN col6 ELSE '' END) END) END)END) AS C3,
(CASE WHEN col4 <> '' AND col3 <> '' AND col2 <> '' THEN col4 ELSE (CASE WHEN col5 <> '' THEN col5 ELSE (CASE WHEN col6 <> '' THEN col6 ELSE '' END)
END) END) AS C4,
(CASE WHEN col5 <> '' AND col4 <> '' AND col3 <> '' AND col2 <> '' THEN col5 ELSE (CASE WHEN col6 <> '' THEN col6 ELSE '' END)
END)AS C5
FROM input;
ПОКИДАТЬ;
это то, что я получаю.
R1 R2 C1 C2 C3 C4 C5
A B 41 42 42 42
D E 63 65 68 68
X Y 23 25 55 89 99
K L 12 22 22 22
U V 22 88 11 11 11
этот код не дает мне точного результата, который я хочу, и я также думаю, что должен быть более простой способ сделать это. Пожалуйста посоветуй.