[英]Sql date range with amount
我想以帐户对帐单格式排列数据,但是我完全不知道编写SQL命令,尤其是日期范围。
表A
Creditors name Invoice No Due date Outstanding Amt
Company A A001 1/8/2014 1500
Company B A002 1/6/2014 300
Company B A003 1/7/2014 900
Company B A004 5/7/2014 50
Company c A005 31/12/2014 200
结果,声明日期:11/8/14
Creditors name 0-30 Days 31-60 Days 61-90 Days Over 90 Days Amt Due
Company A 1500 0 0 0 1500
Company B 0 950 300 0 1250
Company c 0 0 0 200 200
请帮忙,谢谢
您可以使用下面提到的查询获取记录。
SELECT *
FROM periods
WHERE range_start <= @check_period_end
AND range_end >= @check_period_start
PS更新@check_period_end和@check_period_start并在单引号中加上相关的开始和结束日期。
您可以通过此查询获取示例中的期间
SELECT DATEDIFF(day,'2008-06-05','2008-08-05')
现在,如果您只想通过单个查询使输出表像示例中那样,那就太复杂了。首先尝试将视图与上述查询一起使用,然后获取数据...尝试执行此操作,如果遇到任何错误,然后询问这里..至少先尝试..
我不确定...我认为此声明有效(未经测试)
SELECT T01.[Creditors name],
(SELECT SUM() FROM TABLEA T02 WHERE DATEDIFF(day,T02.[Due date], GetDate())) BETWEEN -1 AND 31 AND T01.[Creditors name] = T02.[Creditors name]) AS [0-30 Days],
(SELECT SUM() FROM TABLEA T03 WHERE DATEDIFF(day,T02.[Due date], GetDate())) BETWEEN -30 AND 61 AND T01.[Creditors name] = T03.[Creditors name]) AS [31-60 Days],
(SELECT SUM() FROM TABLEA T04 WHERE DATEDIFF(day,T02.[Due date], GetDate())) BETWEEN -60 AND 91 AND T01.[Creditors name] = T04.[Creditors name]) AS [61-90 Days],
(SELECT SUM() FROM TABLEA T05 WHERE DATEDIFF(day,T02.[Due date], GetDate())) > 90 AND T01.[Creditors name] = T05.[Creditors name]) AS [Over 90 Days],
SUM(T01.[Outstanding Amt]) AS [Amt Due]
FROM TABLEA T01
GROUP BY T01.[Creditors name]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.