我需要对两个数据集中的变量进行求和并将其加入。我想在一个SQL语句中执行此操作,但它是一对多连接。我有兴趣了解是否可以使用SELECT语句创建摘要变量,因为缺少更好的描述。使用Proc创建汇总变量SQL
下面的代码错误地计算了HOURS的摘要变量,因为INTERVAL中每个名称/日期只有一条记录,但详细信息中每个名称/日期有多个记录。
我当然可以编写多个步骤来完成这个任务,但是想看看它是否可以在一个SQL步骤中完成。由于
示例代码:
data Detail;
Length Name CallType $25;
input date mmddyy10. name $ calltype $ count;
Format date mmddyy10.;
datalines;
05/01/2014 John Order 5
05/01/2014 John Complaint 6
05/01/2014 Mary Order 7
05/01/2014 Mary Complaint 8
05/01/2014 Joe Order 4
05/01/2014 Joe Complaint 2
05/01/2014 Joe Internal 2
05/02/2014 John Order 6
05/02/2014 John Complaint 4
05/02/2014 Mary Order 9
05/02/2014 Mary Complaint 7
05/02/2014 Joe Order 3
05/02/2014 Joe Complaint 1
05/02/2014 Joe Internal 3
;
data Interval;
Length Name $25;
input date mmddyy10. name $ hours;
Format date mmddyy10.;
datalines;
05/01/2014 John 8
05/01/2014 Mary 6
05/01/2014 Joe 4
05/02/2014 John 8
05/02/2014 Mary 6
05/02/2014 Joe 4
;
PROC SQL noprint feedback;
CREATE TABLE SUMMARY AS
SELECT
D.Name
, Sum(D.Count) as Count
, Sum(I.Hours) as Hours
FROM Detail D, Interval I
WHERE D.Name=I.Name and D.Date=I.Date
GROUP BY D.Name
ORDER BY D.Name;
QUIT;
谢谢。因为它更容易调试?代码更清洁?或者你认为它更有效率? –
因此,在你的外部FROM语句中,你不做一个连接? –
这只是GROUP BY语句中的拼写错误吗? –