在Teradata Sql中(如果可能的话,也可以在SAS中执行)我正在尝试根据给定ID有多个不同值的字段来复制重复项。我不想丢失该列中的新的不同值,因此我想将其写为新列。可能存在任意数量的不同值,因此必须动态计算每个不同的值并为每个值写一个新列。下面是表格示例:
ID | V1 | V2 |
A | Mike | 25 |
A | Mike | 26 |
A | Mike | 27 |
要:
ID | V1 | V2 | V2.1 | V2.2 |
A | Mike | 25 | 26 | 27 |
答案 0 :(得分:1)
这可以使用proc transpose
在SAS中轻松完成,这将动态创建新列。在这种情况下,您将by
变量设置为id
(或id
和V1
的组合)。
data tmp;
input id $ V1 $ V2;
datalines;
A Mike 25
A Mike 30
B Mark 4
C Mack 23
C Mack 40
C Mack 90
;
run;
proc sort data=tmp;
by id v1;
run;
proc transpose data=tmp out=trans;
by id V1;
var v2;
run;
proc print;
结果输出如下:
Obs id V1 _NAME_ COL1 COL2 COL3
1 A Mike V2 25 30 .
2 B Mark V2 4 . .
3 C Mack V2 23 40 90
还有很多其他选项可用于更改文档中输出的名称。