问题描述
我有一个表格,其中包含每月迄今为止的总收益损失,其中包含各种投资组合、证券标识符和业务单位。每个月,期间开始日期都会刷新到新月的开始,但该表通常一次包含整个季度的数据。如何编写查询来计算按投资组合、代码和业务部门分组的所有“结束日期”的单日收益损失?
Portfolio Fund Legal Entity Security IDENTIFIER BUSInesS UNIT GAIN/LOSS Start Date End Date
Portfolio1 LegalEntity1 Ticker1 PUBLIC (4,760,588.0) 1-Feb 27-Feb
Portfolio1 LegalEntity1 Ticker1 PUBLIC 9,123,144.0 1-Feb 28-Feb
Portfolio1 LegalEntity1 Ticker1 PUBLIC 7,470,013.0 1-Mar 1-Mar
Portfolio1 LegalEntity1 Ticker1 PUBLIC 24,466,723.0 1-Mar 2-Mar
Portfolio1 LegalEntity1 Ticker1 PUBLIC 4,272,096.0 1-Mar 3-Mar
Portfolio1 LegalEntity1 Ticker1 PUBLIC 14,043,454.0 1-Mar 4-Mar
Portfolio1 LegalEntity1 Ticker1 PUBLIC 17,631,760.0 1-Mar 5-Mar
解决方法
如果您的 dbms 支持,您可以使用延迟:
SELECT Portfolio,Fund_Legal_Entity,SECURITY_IDENTIFIER,BUSINESS_UNIT,GAIN_LOSS,Start_Date,End_Date,(gain_loss-lag(GAIN_LOSS) OVER (PARTITION BY Portfolio,BUSINESS_UNIT
ORDER BY end_date)) Daily_gain_loss
FROM tablename