我正在使用静态日期计算行数(例如datefield> = 01/02/2019和datefield <= 28/02/2019),我得到x行数。我的报告是每月运行一次
由其他人开发的自动报告定义时间段(应为一个月),并使用下面的宏定义时间段。在同一时间段内,报告给出的行数为y。
有人可以用简单的英语解释下面的宏吗(不用说我的sas和proc sql技能非常有限)
我假设它选择的时间可能超过一个月,因此我计算行数时的数字差异
/*%macro (today = );*/
option MPRINT MLOGIC symbolgen;
data _null_;
M_month = month(&today);
if M_month in (1 2 3 4 5 6) then
call symput('M_StartDate', put(intnx('month', &today ,-2-M_month,'beginning'), date9.));
else
call symput('M_StartDate', put(intnx('month', &today ,4-M_month,'beginning'), date9.));
if M_month in ( 5 6)then
call symput('M_EndDate', put(intnx('month', &today ,3-M_month,'end'), date9.));
else if M_month in ( 11 12) then
call symput('M_EndDate', put(intnx('month', &today ,9-M_month,'end'), date9.));
else
call symput('M_EndDate', put(intnx('month', &today ,-1,'end'), date9.));
call symput('M_CuttOffDate', put(intnx('month', &today , -1,'end'), date9.));
call symput('run_MMMYY', put(intnx('month', &today , 0,'end'), EURDFMY5.));
run;
答案 0 :(得分:1)
最后两个很简单。 Cuttoff是上个月的最后一天。最后一个MMMYY就是该格式的当月月份。
对于其他两个,它正在根据一年中的月份调整更改日期的数量。
要弄清楚,您可能只想让自己成为一个小的真值表,该表每年一年一次,每行一列,用于不同的目标宏变量。因此,也许只需写下TODAY的月份,然后为新的宏变量生成哪个月份。
data _null_;
do m_month=1 to 12 ;
today = mdy(m_month,1,2018);
if M_month in (1 2 3 4 5 6) then M_StartDate = intnx('month', today ,-2-M_month,'b');
else M_StartDate = intnx('month', &today ,4-M_month,'b');
if M_month in ( 5 6)then M_EndDate = intnx('month', today ,3-M_month,'e');
else if M_month in ( 11 12) then M_EndDate = intnx('month', today ,9-M_month,'e');
else M_EndDate = intnx('month', today ,-1,'end');
put (today m_startdate m_enddate) (=yymmdd10.);
end;
run;
结果
today=2018-01-01 M_StartDate=2017-10-01 M_EndDate=2017-12-31
today=2018-02-01 M_StartDate=2017-10-01 M_EndDate=2018-01-31
today=2018-03-01 M_StartDate=2017-10-01 M_EndDate=2018-02-28
today=2018-04-01 M_StartDate=2017-10-01 M_EndDate=2018-03-31
today=2018-05-01 M_StartDate=2017-10-01 M_EndDate=2018-03-31
today=2018-06-01 M_StartDate=2017-10-01 M_EndDate=2018-03-31
today=2018-07-01 M_StartDate=2018-04-01 M_EndDate=2018-06-30
today=2018-08-01 M_StartDate=2018-03-01 M_EndDate=2018-07-31
today=2018-09-01 M_StartDate=2018-02-01 M_EndDate=2018-08-31
today=2018-10-01 M_StartDate=2018-01-01 M_EndDate=2018-09-30
today=2018-11-01 M_StartDate=2017-12-01 M_EndDate=2018-09-30
today=2018-12-01 M_StartDate=2017-11-01 M_EndDate=2018-09-30
答案 1 :(得分:0)
删除通话记录并创建变量。
calc_price()
成为:
<?php
include("header.php");
?>
<script type="text/javascript">
function calc_price()
{
alert('ooooooooooooooooooooooooooooo');
var pro_qty=<?php echo($row['pro_qty']);?>;
var price=document.getElementById('pro_price').value;
var count=document.getElementById('pro_qty').value;
var total_price;
if(count>pro_qty)
{alert('تعداد موجودی انبار کمتر از درخواست شماست');
document.getElementById('pro_qty').value=0;
count=0;
}
if(count==0 || count='') total_price=0;
else total_price=count*price;
document.getElementById('total_price').value=total_price;
}
</script>
<form action="action_order.php" method="post" name="order">
<p>
<label for="textfield3">تعداد درخواستی</label>
<input type="text" name="pro_qty" id="pro_qty" onChange="calc_price();">
</p>
<input type="submit" name="button" id="button" value="خرید محصول">
</p>
</form>
<?php
include("footer.php");
?>
添加循环以循环浏览日期以查看不同的范围。
render() {
var sidebarpagedata = this.state.allServices.companies.map((sidebarpagedata, index) => {
<Button type="button" className="default pull-right" onClick={this.addCompnay} >Apply Now</Button>
})
return (
{sidebarpagedata}
);
}
然后,您可以检查输出,查看范围是什么,以及它们是否符合您的期望。它看起来是变化的动态范围。