在 SAS 中使用 proc sql 按日期分组
Group by date using proc sql in SAS
我想在 SAS 中汇总每年同一成本中心的所有值。我尝试在 Proc SQL 中使用 Group By 函数。
PROC SQL
CREATE TABLE incident_data AS
SELECT Cost_Centre_Dim.Cost_Centre_Name,
Sum(Count*Amount) AS TOT,
OCC_DATE format= Year4.
FROM Incidents,
Incident_Type,
Cost_Centre_Dim
WHERE Incidents.Incident_Code = Incident_Type.Incident_Code
AND Incidents.Cost_Centre_ID = Cost_Centre_Dim.Cost_Centre_ID
GROUP BY Cost_Centre_Dim.Cost_Centre_Name,
OCC_DATE
ORDER BY [Cost Centre Dim].[Cost Centre Name];
QUIT;
RUN;
输出如下所示:
2012 34.41 ACCI2
2012 34.23 ACCI2
2014 25.71 INFR1
2014 27.82 INFR1
2014 22.26 INFR2
2014 20.97 INFR2
2013 22.64 ACCI4
2013 19.29 ACCI4
2013 18.26 ACCI4
2014 35.82 ACCI4
2015 97.81 INFR3
2015 44.04 INFR3
2014 57.09 INFR3
我希望我的输出显示每年 1 种事件的 1 行以及总计金额。像这样:
2012 68.64 ACCI2
2014 53.53 INFR1
2014 43.23 INFR2
...
非常感谢任何建议
尝试将 OCC_DATE 转换为如下文本:
put(OCC_DATE, year4) as MyOCC_DATE
我认为原始代码只是以您指定的格式显示日期,但它仍然是 OCC_DATE 的实际数值。如果您将其更改为您想要的格式的字符,那么它应该正确地进行分组。
我想在 SAS 中汇总每年同一成本中心的所有值。我尝试在 Proc SQL 中使用 Group By 函数。
PROC SQL
CREATE TABLE incident_data AS
SELECT Cost_Centre_Dim.Cost_Centre_Name,
Sum(Count*Amount) AS TOT,
OCC_DATE format= Year4.
FROM Incidents,
Incident_Type,
Cost_Centre_Dim
WHERE Incidents.Incident_Code = Incident_Type.Incident_Code
AND Incidents.Cost_Centre_ID = Cost_Centre_Dim.Cost_Centre_ID
GROUP BY Cost_Centre_Dim.Cost_Centre_Name,
OCC_DATE
ORDER BY [Cost Centre Dim].[Cost Centre Name];
QUIT;
RUN;
输出如下所示:
2012 34.41 ACCI2
2012 34.23 ACCI2
2014 25.71 INFR1
2014 27.82 INFR1
2014 22.26 INFR2
2014 20.97 INFR2
2013 22.64 ACCI4
2013 19.29 ACCI4
2013 18.26 ACCI4
2014 35.82 ACCI4
2015 97.81 INFR3
2015 44.04 INFR3
2014 57.09 INFR3
我希望我的输出显示每年 1 种事件的 1 行以及总计金额。像这样:
2012 68.64 ACCI2
2014 53.53 INFR1
2014 43.23 INFR2
...
非常感谢任何建议
尝试将 OCC_DATE 转换为如下文本:
put(OCC_DATE, year4) as MyOCC_DATE
我认为原始代码只是以您指定的格式显示日期,但它仍然是 OCC_DATE 的实际数值。如果您将其更改为您想要的格式的字符,那么它应该正确地进行分组。