Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql SAS Count函数不返回按年计数_Sql_Sas - Fatal编程技术网

Sql SAS Count函数不返回按年计数

Sql SAS Count函数不返回按年计数,sql,sas,Sql,Sas,我正在使用以下SAS代码生成年度计数: data have; infile cards truncover expandtabs; input MC $ ET $ Date :date9. Time :time. PMC $ PXMC $ Site $ Dia MV SF; format date date8. Time HHMM.; cards; US000409 Meas 12Oct2015 17:26 7101 Et1 1 . 2780462.00000 1 US000409 Me

我正在使用以下SAS代码生成年度计数:

data have;
 infile cards truncover expandtabs;
 input MC $ ET $ Date :date9. Time :time. PMC $ PXMC $ Site $ Dia MV SF;
 format date date8. Time HHMM.;
 cards;
US000409 Meas 12Oct2015 17:26 7101 Et1 1 . 2780462.00000 1
US000409 Meas 12Nov2016 17:33 7101 Et1 1 861.26 2780462.00000 1
US000409 Lath 12Oct2015 17:33 7102 Et1 1 861.6 2780462.00000 1
US01036 Meas 12Nov2016 17:26 7101 Et1 2 . 522860.00000 1
US01036 Lath 13Oct2016 17:33 7202 Et1 2 866.68 522860.00000 1
US01036 Meas 13Oct2015 17:33 7101 Et1 2 867.36 522860.00000 1
US02044 Meas 13Nov2016 17:26 7202 Et1 1 . 569298.00000 1
US02044 Lath 13Nov2015 17:33 7202 Et1 1 865.32 569298.00000 1
US02044 Meas 14Nov2016 17:33 7202 Et1 2 865.68 569298.00000 1
US318 Lath 14Nov2016 17:26 7101 Et2 2 . 2630856.00000 1
US318 Meas 14Nov2016 17:33 7202 Et2 3 863.26 2630856.00000 1
US318 Lath 14Nov2016 17:33 7202 Et2 3 863.94 2630856.00000 1
US000409 Meas 15Nov2016 21:56 7202 Et2 3 860.98 2780462.00000 1
US000409 Meas 15Nov2016 21:56 7203 Et2 4 861.5 2780462.00000 1
US01036 Lath 16Nov2016 21:56 7101 Et2 4 866.64 522860.00000 1
US01036 Meas 16Nov2016 21:56 7202 Et2 4 867.34 522860.00000 1
US02044 Lath 17Nov2016 21:56 7203 Et2 1 865.3 569298.00000 1
US02044 Meas 17Nov2016 21:56 7204 Et2 3 865.68 569298.00000 1
US318 Lath 17Nov2016 21:56 7204 Et2 2 863.24 2630856.00000 1
;
run;

PROC SQL;
   CREATE TABLE HAVE01 AS 
   SELECT t1.*, t1.Date FORMAT=YEAR4. LABEL="Year" AS Year 
            FROM HAVE t1;
 QUIT;

PROC SQL;
   CREATE TABLE WANT AS 
   SELECT Year, (COUNT(ET)) AS COUNT_of_ET
      FROM HAVE01
      GROUP BY Year;
QUIT;
不幸的是,我得到的结果如下:

Year    Count_of_ET
2015    2
2015    1
2015    1
2016    1
2016    2
2016    1
2016    4
2016    2
2016    2
2016    3
Year    Count_of_ET
2015    4
2016    15
我期待着这样的事情:

Year    Count_of_ET
2015    2
2015    1
2015    1
2016    1
2016    2
2016    1
2016    4
2016    2
2016    2
2016    3
Year    Count_of_ET
2015    4
2016    15
我不知道我在哪里犯了错误

你能帮忙吗


另外,暂时忘记“MV”列的值在上面的示例数据中是什么样子的,我需要计算的是MV中的“日期”差异,类似于这种计算的DIF函数或滞后函数

问题在于,您的“新年”字段仍然是日期,而不是年份号-您只是将其格式化为一年

如果改为使用“年份”功能,它将工作:

PROC SQL;
   CREATE TABLE HAVE01 AS 
   SELECT t1.*,
          YEAR(t1.Date) LABEL="Year" AS Year /* < Changes made here */
   FROM HAVE t1;
QUIT;

现在输出如您所期望。

谢谢。是的,我意识到了错误我还在等待有人来帮助我,只是暂时忘记“MV”列的值在上面的样本数据中是什么样子,我需要计算的是MVs中的“日期”差异,类似于DIF函数或滞后函数。所以1这是一个不同的问题,2我不完全理解这个问题。你想知道两次约会的区别是基于什么?你说对了,兄弟。两个日期之间的差异。假设1月1日的观测值为10,1月2日的观测值为ob。比差值=12-10=2小12。但它应该为MC分组,例如US000409和PMCe.g。7101如果一个日期有两个不同的时间15:17和18:21,那么只考虑第一个时间戳,而不考虑其他时间戳。作为一个单独的问题问这个,这与这个太不同了。而不是我在SQL中尝试的东西。