我有一个关于SAS SQL JOIN的输出表的问题。这是我的示例代码:
data payroll;
input IdNumber $4. +3 Gender $1. +4 Jobcode $3. +9 Salary 5.
+2 Birth date7. +2 Hired date7.;
informat birth date7. hired date7.;
format birth date7. hired date7.;
datalines;
1919 M TA2 34376 12SEP60 04JUN87
1653 F ME2 35108 15OCT64 09AUG90
1400 M ME1 29769 05NOV67 16OCT90
1350 F FA3 32886 31AUG65 29JUL90
1401 M TA3 38822 13DEC50 17NOV85
1499 M ME3 43025 26APR54 07JUN80
1101 M SCP 18723 06JUN62 01OCT90
1333 M PT2 88606 30MAR61 10FEB81
1402 M TA2 32615 17JAN63 02DEC90
1479 F TA3 38785 22DEC68 05OCT89
1403 M ME1 28072 28JAN69 21DEC91
1739 M PT1 66517 25DEC64 27JAN91
1658 M SCP 17943 08APR67 29FEB92
1428 F PT1 68767 04APR60 16NOV91
1782 M ME2 35345 04DEC70 22FEB92
1244 M ME2 36925 31AUG63 17JAN88
1383 M BCK 25823 25JAN68 20OCT92
1574 M FA2 28572 27APR60 20DEC92
1789 M SCP 18326 25JAN57 11APR78
1404 M PT2 91376 24FEB53 01JAN80
1437 F FA3 33104 20SEP60 31AUG84
1639 F TA3 40260 26JUN57 28JAN84
1269 M NA1 41690 03MAY72 28NOV92
1065 M ME2 35090 26JAN44 07JAN87
1876 M TA3 39675 20MAY58 27APR85
1037 F TA1 28558 10APR64 13SEP92
1129 F ME2 34929 08DEC61 17AUG91
1988 M FA3 32217 30NOV59 18SEP84
1405 M SCP 18056 05MAR66 26JAN92
1430 F TA2 32925 28FEB62 27APR87
1983 F FA3 33419 28FEB62 27APR87
1134 F TA2 33462 05MAR69 21DEC88
1118 M PT3 111379 16JAN44 18DEC80
1438 F TA3 39223 15MAR65 18NOV87
1125 F FA2 28888 08NOV68 11DEC87
1475 F FA2 27787 15DEC61 13JUL90
1117 M TA3 39771 05JUN63 13AUG92
1935 F NA2 51081 28MAR54 16OCT81
1124 F FA1 23177 10JUL58 01OCT90
1422 F FA1 22454 04JUN64 06APR91
1616 F TA2 34137 01MAR70 04JUN93
1406 M ME2 35185 08MAR61 17FEB87
1120 M ME1 28619 11SEP72 07OCT93
1094 M FA1 22268 02APR70 17APR91
1389 M BCK 25028 15JUL59 18AUG90
1905 M PT1 65111 16APR72 29MAY92
1407 M PT1 68096 23MAR69 18MAR90
1114 F TA2 32928 18SEP69 27JUN87
1410 M PT2 84685 03MAY67 07NOV86
1439 F PT1 70736 06MAR64 10SEP90
1409 M ME3 41551 19APR50 22OCT81
1408 M TA2 34138 29MAR60 14OCT87
1121 M ME1 29112 26SEP71 07DEC91
1991 F TA1 27645 07MAY72 12DEC92
1102 M TA2 34542 01OCT59 15APR91
1356 M ME2 36869 26SEP57 22FEB83
1545 M PT1 66130 12AUG59 29MAY90
1292 F ME2 36691 28OCT64 02JUL89
1440 F ME2 35757 27SEP62 09APR91
1368 M FA2 27808 11JUN61 03NOV84
1369 M TA2 33705 28DEC61 13MAR87
1411 M FA2 27265 27MAY61 01DEC89
1113 F FA1 22367 15JAN68 17OCT91
1704 M BCK 25465 30AUG66 28JUN87
1900 M ME2 35105 25MAY62 27OCT87
1126 F TA3 40899 28MAY63 21NOV80
1677 M BCK 26007 05NOV63 27MAR89
1441 F FA2 27158 19NOV69 23MAR91
1421 M TA2 33155 08JAN59 28FEB90
1119 M TA1 26924 20JUN62 06SEP88
1834 M BCK 26896 08FEB72 02JUL92
1777 M PT3 109630 23SEP51 21JUN81
1663 M BCK 26452 11JAN67 11AUG91
1106 M PT2 89632 06NOV57 16AUG84
1103 F FA1 23738 16FEB68 23JUL92
1477 M FA2 28566 21MAR64 07MAR88
1476 F TA2 34803 30MAY66 17MAR87
1379 M ME3 42264 08AUG61 10JUN84
1104 M SCP 17946 25APR63 10JUN91
1009 M TA1 28880 02MAR59 26MAR92
1412 M ME1 27799 18JUN56 05DEC91
1115 F FA3 32699 22AUG60 29FEB80
1128 F TA2 32777 23MAY65 20OCT90
1442 F PT2 84536 05SEP66 12APR88
1417 M NA2 52270 27JUN64 07MAR89
1478 M PT2 84203 09AUG59 24OCT90
1673 M BCK 25477 27FEB70 15JUL91
1839 F NA1 43433 29NOV70 03JUL93
1347 M TA3 40079 21SEP67 06SEP84
1423 F ME2 35773 14MAY68 19AUG90
1200 F ME1 27816 10JAN71 14AUG92
1970 F FA1 22615 25SEP64 12MAR91
1521 M ME3 41526 12APR63 13JUL88
1354 F SCP 18335 29MAY71 16JUN92
1424 F FA2 28978 04AUG69 11DEC89
1132 F FA1 22413 30MAY72 22OCT93
1845 M BCK 25996 20NOV59 22MAR80
1556 M PT1 71349 22JUN64 11DEC91
1413 M FA2 27435 16SEP65 02JAN90
1123 F TA1 28407 31OCT72 05DEC92
1907 M TA2 33329 15NOV60 06JUL87
1436 F TA2 34475 11JUN64 12MAR87
1385 M ME3 43900 16JAN62 01APR86
1432 F ME2 35327 03NOV61 10FEB85
1111 M NA1 40586 14JUL73 31OCT92
1116 F FA1 22862 28SEP69 21MAR91
1352 M NA2 53798 02DEC60 16OCT86
1555 F FA2 27499 16MAR68 04JUL92
1038 F TA1 26533 09NOV69 23NOV91
1420 M ME3 43071 19FEB65 22JUL87
1561 M TA2 34514 30NOV63 07OCT87
1434 F FA2 28622 11JUL62 28OCT90
1414 M FA1 23644 24MAR72 12APR92
1112 M TA1 26905 29NOV64 07DEC92
1390 M FA2 27761 19FEB65 23JUN91
1332 M NA1 42178 17SEP70 04JUN91
1890 M PT2 91908 20JUL51 25NOV79
1429 F TA1 27939 28FEB60 07AUG92
1107 M PT2 89977 09JUN54 10FEB79
1908 F TA2 32995 10DEC69 23APR90
1830 F PT2 84471 27MAY57 29JAN83
1882 M ME3 41538 10JUL57 21NOV78
1050 M ME2 35167 14JUL63 24AUG86
1425 F FA1 23979 28DEC71 28FEB93
1928 M PT2 89858 16SEP54 13JUL90
1480 F TA3 39583 03SEP57 25MAR81
1100 M BCK 25004 01DEC60 07MAY88
1995 F ME1 28810 24AUG73 19SEP93
1135 F FA2 27321 20SEP60 31MAR90
1415 M FA2 28278 09MAR58 12FEB88
1076 M PT1 66558 14OCT55 03OCT91
1426 F TA2 32991 05DEC66 25JUN90
1564 F SCP 18833 12APR62 01JUL92
1221 F FA2 27896 22SEP67 04OCT91
1133 M TA1 27701 13JUL66 12FEB92
1435 F TA3 38808 12MAY59 08FEB80
1418 M ME1 28005 29MAR57 06JAN92
1017 M TA3 40858 28DEC57 16OCT81
1443 F NA1 42274 17NOV68 29AUG91
1131 F TA2 32575 26DEC71 19APR91
1427 F TA2 34046 31OCT70 30JAN90
1036 F TA3 39392 19MAY65 23OCT84
1130 F FA1 23916 16MAY71 05JUN92
1127 F TA2 33011 09NOV64 07DEC86
1433 F FA3 32982 08JUL66 17JAN87
1431 F FA3 33230 09JUN64 05APR88
1122 F FA2 27956 01MAY63 27NOV88
1105 M ME2 34805 01MAR62 13AUG90
;
data payroll2;
input idnum $4. +3 gender $1. +4 jobcode $3. +9 salary 5.
+2 birth date7. +2 hired date7.;
informat birth date7. hired date7.;
format birth date7. hired date7.;
datalines;
1639 F TA3 42260 26JUN57 28JAN84
1065 M ME3 38090 26JAN44 07JAN87
1561 M TA3 36514 30NOV63 07OCT87
1221 F FA3 29896 22SEP67 04OCT91
1447 F FA1 22123 07AUG72 29OCT92
1998 M SCP 23100 10SEP70 02NOV92
1036 F TA3 42465 19MAY65 23OCT84
1106 M PT3 94039 06NOV57 16AUG84
1129 F ME3 36758 08DEC61 17AUG91
1350 F FA3 36098 31AUG65 29JUL90
1369 M TA3 36598 28DEC61 13MAR87
1076 M PT1 69742 14OCT55 03OCT91
;
当我使用:
proc sql outobs=10;
select p.IdNumber, p.Jobcode, p.Salary,
p2.jobcode label='New Jobcode',
p2.salary label='New Salary' format=dollar8.
from payroll as p left join payroll2 as p2
on p.IdNumber=p2.idnum;
即时输出包含"New Jobcode"one_answers"New Salary"。然而,当我试图将输出保存为表时:
proc sql outobs=10;
create table test as
select p.IdNumber, p.Jobcode, p.Salary,
p2.jobcode label='New Jobcode',
p2.salary label='New Salary' format=dollar8.
from payroll as p left join payroll2 as p2
on p.IdNumber=p2.idnum;
proc print
data=test;
run;
输出中没有"New Jobcode"one_answers"New Salary"列。有人知道为什么会发生这种事吗?SASSQL的即时输出和保存的表之间有什么区别?
不要使用label
,而是尝试使用as
:
select p.IdNumber, p.Jobcode, p.Salary,
p2.jobcode as new_jobcode,
p2.salary as new_salary format=dollar8.
as
是为列指定名称的SQL标准。
proc sql outobs=10;
create table test as select p.IdNumber, p.jobcode,p.salary,
p2.jobcode as New_Jobcode,
p2.salary as New_Salary format=dollar8.
from payroll as p left join payroll2 as p2
on p.IdNumber=p2.idnum;
quit;