在 T-SQL 中查找一天结束时自上次交易(当天或前一天)以来的利润总和
我问过 四月份的一个问题和@Mikael帮助我解决了它。此后要求发生了变化,我无法弄清楚如何构建查询。 表结构为
SID Sdate Profit Units 1 7/26/2010 9:15:00 AM -37.5 -1 1 7/26/2010 12:00:00 PM -125 -1 1 7/26/2010 12:45:01 PM -12.5 -1 1 7/26/2010 12:45:02 PM 0 0 1 7/26/2010 12:45:03 PM -75 1 1 7/26/2010 2:00:01 PM -12.5 1 1 7/26/2010 2:00:02 PM 0 0 1 7/26/2010 2:00:03 PM -125 -1 1 7/26/2010 2:15:00 PM -50 -1 1 7/27/2010 9:15:00 AM 25 -1 1 7/27/2010 12:00:00 PM 196 -1 1 7/27/2010 2:15:00 PM -12.5 -1 1 7/28/2010 9:15:00 AM 425 -1 1 7/28/2010 12:00:00 PM -125 -1 1 7/28/2010 2:15:00 PM -12.5 -1 1 7/29/2010 9:15:00 AM -37.5 -1 1 7/29/2010 12:00:00 PM -90 -1 1 7/29/2010 12:45:01 PM -12.5 -1 1 7/29/2010 12:45:02 PM 0 0 1 7/29/2010 12:45:03 PM -75 1 1 7/29/2010 2:15:00 PM 23 1
计算解释如下:
SID Sdate Profit Units End-of-day-Profit Comments 1 7/26/2010 9:15:00 AM -37.5 -1 1 7/26/2010 12:00:00 PM -125 -1 1 7/26/2010 12:45:01 PM -12.5 -1 1 7/26/2010 12:45:02 PM 0 0 1 7/26/2010 12:45:03 PM -75 1 1 7/26/2010 2:00:01 PM -12.5 1 1 7/26/2010 2:00:02 PM 0 0 1 7/26/2010 2:00:03 PM -125 -1 1 7/26/2010 2:15:00 PM -50 -1 -175 SUM of profit(row 9 to row 11) going back to 7/26/2010 2:00:02 PM 1 7/27/2010 9:15:00 AM 25 -1 1 7/27/2010 12:00:00 PM 196 -1 1 7/27/2010 2:15:00 PM -12.5 -1 33.5 SUM of profit ( row 9 to row 14) going back to 7/26/2010 2:00:02 PM 1 7/28/2010 9:15:00 AM 425 -1 1 7/28/2010 12:00:00 PM -125 -1 1 7/28/2010 2:15:00 PM -12.5 -1 321 SUM of profit(row9 to row 17) going back to 7/26/2010 2:00:02 PM 1 7/29/2010 9:15:00 AM -37.5 -1 1 7/29/2010 12:00:00 PM -90 -1 1 7/29/2010 12:45:01 PM -12.5 -1 1 7/29/2010 12:45:02 PM 0 0 1 7/29/2010 12:45:03 PM -75 1 1 7/29/2010 2:15:00 PM 23 1 -52 SUM of profit(row 22 to row 23) going back to 7/29/2010 12:45:02 PM
结果
SID Sdate Profit Units 1 7/26/2010 -175 -1 1 7/27/2010 33.5 -1 1 7/28/2010 321 -1 1 7/29/2010 -52 1
为 每个 SID 每天下午 2:15 计算净利润列的总和。为简单起见,我包含了一个 SID。其想法是回顾当天或前几天利润 = 0 且单位 = 0 的行。找到该行后,将所有利润值相加。
我很感谢对此的任何帮助。谢谢。
I had asked a question in April and @Mikael helped me solve it. The requirement has since changed and I am having trouble figuring it out how to build the query.
The table structure is
SID Sdate Profit Units 1 7/26/2010 9:15:00 AM -37.5 -1 1 7/26/2010 12:00:00 PM -125 -1 1 7/26/2010 12:45:01 PM -12.5 -1 1 7/26/2010 12:45:02 PM 0 0 1 7/26/2010 12:45:03 PM -75 1 1 7/26/2010 2:00:01 PM -12.5 1 1 7/26/2010 2:00:02 PM 0 0 1 7/26/2010 2:00:03 PM -125 -1 1 7/26/2010 2:15:00 PM -50 -1 1 7/27/2010 9:15:00 AM 25 -1 1 7/27/2010 12:00:00 PM 196 -1 1 7/27/2010 2:15:00 PM -12.5 -1 1 7/28/2010 9:15:00 AM 425 -1 1 7/28/2010 12:00:00 PM -125 -1 1 7/28/2010 2:15:00 PM -12.5 -1 1 7/29/2010 9:15:00 AM -37.5 -1 1 7/29/2010 12:00:00 PM -90 -1 1 7/29/2010 12:45:01 PM -12.5 -1 1 7/29/2010 12:45:02 PM 0 0 1 7/29/2010 12:45:03 PM -75 1 1 7/29/2010 2:15:00 PM 23 1
The calculation is explained as :
SID Sdate Profit Units End-of-day-Profit Comments 1 7/26/2010 9:15:00 AM -37.5 -1 1 7/26/2010 12:00:00 PM -125 -1 1 7/26/2010 12:45:01 PM -12.5 -1 1 7/26/2010 12:45:02 PM 0 0 1 7/26/2010 12:45:03 PM -75 1 1 7/26/2010 2:00:01 PM -12.5 1 1 7/26/2010 2:00:02 PM 0 0 1 7/26/2010 2:00:03 PM -125 -1 1 7/26/2010 2:15:00 PM -50 -1 -175 SUM of profit(row 9 to row 11) going back to 7/26/2010 2:00:02 PM 1 7/27/2010 9:15:00 AM 25 -1 1 7/27/2010 12:00:00 PM 196 -1 1 7/27/2010 2:15:00 PM -12.5 -1 33.5 SUM of profit ( row 9 to row 14) going back to 7/26/2010 2:00:02 PM 1 7/28/2010 9:15:00 AM 425 -1 1 7/28/2010 12:00:00 PM -125 -1 1 7/28/2010 2:15:00 PM -12.5 -1 321 SUM of profit(row9 to row 17) going back to 7/26/2010 2:00:02 PM 1 7/29/2010 9:15:00 AM -37.5 -1 1 7/29/2010 12:00:00 PM -90 -1 1 7/29/2010 12:45:01 PM -12.5 -1 1 7/29/2010 12:45:02 PM 0 0 1 7/29/2010 12:45:03 PM -75 1 1 7/29/2010 2:15:00 PM 23 1 -52 SUM of profit(row 22 to row 23) going back to 7/29/2010 12:45:02 PM
The result would be
SID Sdate Profit Units 1 7/26/2010 -175 -1 1 7/27/2010 33.5 -1 1 7/28/2010 321 -1 1 7/29/2010 -52 1
The sum of net profit column is taken at 2:15PM everyday for every SID. I included one SID for simplicity.The idea is to look back either current day or previous days for the row that has profit=0 and units=0. Once that row is found, then sum all profit values.
I appreciate any help on this.Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我无法访问数据库来测试它。但是填充一个表变量@t并尝试这个。
我猜想您想要每个 SID 的列表。我误解了。我想改变我的答案。
I don't have access to a database to test it. But populate a table variable @t and try this.
I had guess you want a list for each SID. I misunderstood that. I like to change my answer to this.
DDL 和示例数据:
查询:
输出:
DDL & sample data:
The query:
The output: