【发布时间】:2017-07-01 12:18:34
【问题描述】:
我试图弄清楚每个月/年有多少“公开报价”,但不知道如何自动执行此操作。我不想手动输入时间范围来执行此操作并寻求帮助。
我在此处上传了一个示例 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 应计入 2015 年 8 月和 2015 年 9 月的“未结”报价计数,因为该报价在被置于“赢”状态之前处于“未结”状态2015 年 10 月。
我最初试图只提取月/年,然后认为我可以用它做点什么,但我真的不知道如何解决这个问题。即使我做了 DATEDIFF() 我也会得到一段时间,而不是实际的月份。
我希望这是有道理的,并提前感谢您帮助我或至少为我指明了正确的方向。
谢谢!
【问题讨论】:
-
您的日期列是存储为日期还是字符串?
-
我不确定流程。在您的数据中,引用 #2 在更新 15.oct 中既输又赢?
-
您是要统计特定月份开盘的报价数量,还是该月开盘的总报价?如果一个报价在一个月内输赢,是否应该算作当月的未平仓报价?也许如果您可以在问题中添加所需的输出,这可能有助于理解
-
@SørenKongstad,更正了样本数据。我想要每个月的未平仓报价总数。如果报价在一个月内关闭(赢/输),则不应将其视为该月的“未平仓”。因此,如果报价在 2015 年 1 月开盘并在 2015 年 6 月赢得,在历史数据中,它应在 1 月、2 月、3 月、4 月、5 月计为“开盘”,在 6 月计为“赢盘”。这有帮助吗?
标签: sql-server tsql datetime date-range