SAS SQL 与 "Like" 和 '%___%'
SAS SQL with the "Like" and '%___%'
我有一个数据集,我在其中读取了 excel 电子表格的多张纸。其中一个变量 (OrderDate) 的格式为“04-Aug-95”,但当我打印时,它显示为“04AUG1995”。
我正在尝试编写代码来 return 1995 年第一季度的订单数。但是,下面的代码 return 列出了数据集和 Count 为 830(这是总行数)。非常感谢任何帮助:
proc sql;
select OrderDate, count(*) as Count
from Orders
where OrderDate LIKE '%JAN1995' OR '%FEB1995' OR '%MAR1995';
quit;
如果您的订购日期存储在日期中,那么您可以像下面这样,第一季度包括一月二月和三月
Proc sql;
select OrderDate, count(*) as Count
from Orders
where qtr(OrderDate) = 1 and year(OrderDate)=1995;
quit;
不要将格式误认为值。
excel 中的日期存储为自 1/1/1970 以来的天数。 04-Aug-95
的日期在 excel 中的值为 34915,其格式非常适合显示给您。
SAS 的相似之处在于日期值和日期格式的存储方式相似。不同之处在于 SAS 中的纪元是 1/1/1960(比 excel 早 10 年)。
因为日期值实际上是数值,所以对它们使用 like
语句实际上没有意义。您真的想 select 使用 where 子句的日期范围。 IE。 where OrderDate between '01jan1995'd and '31mar1995'd
.
试试(在 where 子句中):
Put(OrderDate, Date9.) like '%JAN1995' OR Put(OrderDate, Date9.) like '%FEB1995' OR Put(OrderDate, Date9.) like '%MAR1995'
或者:
Where Case When Put(OrderDate, Date9.) like '%JAN1995' Then 1
When Put(OrderDate, Date9.) like '%FEB1995' Then 1
When Put(OrderDate, Date9.) like '%MAR1995' Then 1
Else 0
End
我有一个数据集,我在其中读取了 excel 电子表格的多张纸。其中一个变量 (OrderDate) 的格式为“04-Aug-95”,但当我打印时,它显示为“04AUG1995”。
我正在尝试编写代码来 return 1995 年第一季度的订单数。但是,下面的代码 return 列出了数据集和 Count 为 830(这是总行数)。非常感谢任何帮助:
proc sql;
select OrderDate, count(*) as Count
from Orders
where OrderDate LIKE '%JAN1995' OR '%FEB1995' OR '%MAR1995';
quit;
如果您的订购日期存储在日期中,那么您可以像下面这样,第一季度包括一月二月和三月
Proc sql;
select OrderDate, count(*) as Count
from Orders
where qtr(OrderDate) = 1 and year(OrderDate)=1995;
quit;
不要将格式误认为值。
excel 中的日期存储为自 1/1/1970 以来的天数。 04-Aug-95
的日期在 excel 中的值为 34915,其格式非常适合显示给您。
SAS 的相似之处在于日期值和日期格式的存储方式相似。不同之处在于 SAS 中的纪元是 1/1/1960(比 excel 早 10 年)。
因为日期值实际上是数值,所以对它们使用 like
语句实际上没有意义。您真的想 select 使用 where 子句的日期范围。 IE。 where OrderDate between '01jan1995'd and '31mar1995'd
.
试试(在 where 子句中):
Put(OrderDate, Date9.) like '%JAN1995' OR Put(OrderDate, Date9.) like '%FEB1995' OR Put(OrderDate, Date9.) like '%MAR1995'
或者:
Where Case When Put(OrderDate, Date9.) like '%JAN1995' Then 1
When Put(OrderDate, Date9.) like '%FEB1995' Then 1
When Put(OrderDate, Date9.) like '%MAR1995' Then 1
Else 0
End