我在SAS EGRC 6.1模块中工作,我在工作库中有如下数据集
SAGIA_Detail
BranchCode BranchName RegionCode SagiaLicNo IssuingDate ExpiryDate
20 Abc Central 1 1/1/2000 1/1/2001
20 Abc Central 2 1/1/2000 1/1/2001
10 def East 3 1/1/2000 1/1/2001
BranchManager IsIssuance IssuanceFees IsRenewal RenewalFees Total
name Yes 100 No 0 100
name Yes 100 Yes 100 200
name Yes 200 Yes 100 300
我想在我的SASStoredProcess报告中使用BranchName或BranchName分组打印此数据集。 我编写了这段代码但是它只打印了我的数据集的数据行而没有任何html表的总行或格式行。
简而言之,它不会在do循环结束语句之后执行任何代码。请帮我弄清楚我的编码错误。
data _null_;
file _webout;
put '<html><body><table>';
do until(last.region);
set SAGIA_Detail nobs=nobs end=eof;
by BranchCode RegionCode BranchName;
if first.BranchCode then put
'<tr><th colspan="9"><span><b><u>BranchCode</u></b>: ' BranchCode '</span><span><b><u>BranchName</u></b>: ' BranchName '</span><span><b><u>RegionCode</u></b>: ' RegionCode '</sapn></th></tr>
<tr class=Head>
<th>Sagia LicenseNo</th>
<th>Issue Date</th>
<th>Expiry Date</th>
<th>Manager Name</th>
<th>Is Issuance</th>
<th>Issuance Fees</th>
<th>Is Renewal</th>
<th>Renewal Fees</th>
<th>Total</th>
</tr>';
put '<tr>
<td>';put SagiaLicNo; put '</td>
<td>';put IssuingDate date10.; put '</td>
<td>';put ExpiryDate date10.; put '</td>
<td>';put BranchManager; put '</td>
<td>';put IsIssuance; put '</td>
<td>';put IssuanceFees comma12.2; put '</td>
<td>';put IsRenewal; put '</td>
<td>';put RenewalFees comma12.2; put '</td>
<td>';put Total comma12.2; put '</td>
</tr>';
Total_IssuanceFees = sum(Total_IssuanceFees,IssuanceFees);
Total_RenewalFees = sum(Total_RenewalFees,RenewalFees);
Total_TotalFees = sum(Total_TotalFees,Total);
end;
put '<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>';
put '<tr class=Grand>
<td>Grand</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>' Total_IssuanceFees '</td>
<td></td>
<td>' Total_RenewalFees '</td>
<td>' Total_TotalFees '</td>
</tr>';
Issuancegrand+Total_IssuanceFees;
Renewalgrand+Total_RenewalFees;
Totalgrand+Total_TotalFees;
if eof then put
'<tr class=Grand>
<td colspan="6">GrandTotal</td>'
'<td>' Issuancegrand '</td>'
'<td>' Renewalgrand '</td>'
'<td>' Totalgrand '</td></tr>'
'</table>
</body>
</html>';
run;
答案 0 :(得分:1)
首先,您使用的是BY
子句,请确保您的数据已排序。
proc sort data=SAGIA_Detail;
by BranchCode RegionCode BranchName;
run;
其次,您的示例数据包含变量BranchRegion
,但您的代码使用RegionCode
。这些都一样吗?确保您的代码使用的是实际存在的变量。
此外,您的数据步骤引用了last.region
。没有region
变量。
修复这些应该让你更接近你想要的东西。