我真的需要以下帮助。
select
DATEADD(month,DATEDIFF(month,'20010101',DATEADD(day,-10,[Date])),'20010111')
as PeriodStart, SUM(pay) as total
from
Payroll
where
[Date] between
DATEADD(month,DATEDIFF(month,'20010101',DATEADD(day,-10
,CURRENT_TIMESTAMP))
,'20001211') and
DATEADD(month,DATEDIFF(month,'20010101',DATEADD(day,-10
,CURRENT_TIMESTAMP))
,'20010210') AND (email = 'xx@.xx.com')
group by
DATEADD(month,DATEDIFF(month,'20010101',DATEADD(day,-10,[Date])),'20010111')
order by
DATEADD(month,DATEDIFF(month,'20010101',DATEADD(day,-10,[Date])),'20010111')
基本上我拥有的是2张桌子(工资单和历史记录)。在工资表中,我有以下项目,日期支付用户名timeon timeoff。在历史表中,这些列是一年中的月份JAN FEB MAR APR等。
当用户输入他的timeon和timeoff详细信息时,他还会在pay列中输入一个值(如果有,则为0),以及日期。所以表格的典型行是:
Date username timeon timeoff pay 10/08/2014 xx@xx.com 08:00 10:00 60 11/08/2014 xx@xx.com 09:00 19:00 70 12/08/2014 xx@xx.com 07:00 18:00 60 14/08/2014 xx@xx.com 06:00 17:00 90 etc...
当用户提交了详细信息时,上面的脚本会读取总薪资,并使用当月的总数来更新历史记录表。 (这是在单独的脚本中完成的)此脚本中的信息由数组收集。我需要帮助的原因之一
最重要的是,我们的工资单从月的11号开始运行到下个月的10号,这就是上面的SQL代码所做的事情。它查找从11日到10日的所有支付值,并将其总计为总和。它还为我提供了上个月(2014年7月11日至2014年8月10日)的价值。输出视图如下所示:
PeriodStart total 2014-07-11 180 (Previous month) 2014-08-11 45 (This month)
上个月是2014年7月11日 - 2014年8月10日 本月是2014年8月11日 - 2014年9月10日
我需要的是重写上面的代码以给我4个单独的变量。作为一个例子,变量名可以是 - previous_month,ptotal,this_month,ttotal这些4个变量然后可以用在我的经典asp编码中。
如果将上述SQL语句拆分为2个单独的语句更容易,那就没问题了。
我正试图摆脱在我的经典ASP代码中使用数组,因为当我有一个新用户时会抛出错误。我也会发现使用变量比使用数组更容易。
答案 0 :(得分:1)
根据@Damien_The_Unbeliever的评论:
Best way to display correct value after a specific date Classic ASP SQL?,你不能从记录集本身获得4个变量吗?类似的东西:
set rs= ....
if not rs.eof then
previous_month = Month(rs("PeriodStart"))
ptotal = rs("total")
rs.moveNext
this_month = Month(rs("PeriodStart"))
ttotal = rs("total")
end if