T-SQL获取日期范围中的打开报价的计数器

时间:2017-02-13 13:32:21

标签: sql-server tsql datetime date-range

我试图找出有多少' Open Quotes'每个月/每年都有,并且不确定如何自动执行此操作。我不想手动输入时间范围来执行此操作并寻求帮助。

我已在此处上传了一个示例CSV文件和数据: https://drive.google.com/open?id=0B4xdnV0LFZI1N1kwbFUtOUpMa2c

表格中的前两行如下所示:

tbl_QuoteWin

Quote_No    Add_Date    Update_Date     Quote_Status
5           05-Aug-15       10-15-Oct           Win
6           17-Sep-15       18-15-Nov           Win

tbl_QuoteOpen

Quote_No    Add_Date      Update_Date        Quote_Status
1           08-Aug-15                               Open
3           07-Sep-15                               Open

tbl_QuoteLoss

Quote_No    Add_Date         Update_Date     Quote_Status
2           07-Aug-15         17-Oct-15             Loss
4           25-Sep-15         7-Nov-15              Loss

对于我来说,期望的输出是一种方法,可以将一个月内赢得的报价除以一个月内打开的报价数量。我不知道如何捕捉Add_Date_Month'之间的月份。和' Update_Date_Month'。

例如,在tbl_QuoteWin中,引号#2应该是' Open' 2015年8月和2015年9月的报价是因为这个报价是在' Open'它被置于“胜利”之前的状态2015年10月的状态。

我原本试图拔出一个月/年然后认为我可以做一些事情,但我真的不知道如何解决这个问题。即使我做了DATEDIFF(),我也会得到一段时间,而不是实际的月份。

我希望这是有道理的,并提前感谢你帮助我或至少指出我正确的方向。

谢谢!

1 个答案:

答案 0 :(得分:0)

SELECT MONTH(Add_Date),YEAR(Add_Date), COUNT(*)
FROM tbl_QUOTEOpen 
GROUP BY MONTH(Add_Date),YEAR(Add_Date)

此解决方案是可行的,因为只有处于打开状态的报价在Open Quote表中。一旦他们赢了或输了,他们就会搬到另一张桌子。 根据您问题中的表格,结果将是

8  2015 1
9  2015 1