目前我的表格如下所示:
Id StockCompanyId StockIndexId FilterDatePeriodId Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20
6301 4 1 NULL NULL NULL NULL 0.14 0.14 0.14 0.14 NULL NULL NULL NULL 0.05 0.05 0.05 0.05 NULL NULL NULL NULL NULL NULL
6553 1 1 NULL NULL NULL NULL 0.53 0.53 0.53 0.53 0.58 0.58 0.58 0.58 0.55 0.55 0.55 0.55 0.50 0.50 0.50 0.50 0.43 0.43
6805 2 1 NULL NULL NULL NULL 0.00 0.00 0.00 0.00 0.05 0.05 0.05 0.05 0.08 0.08 0.08 0.08 0.06 0.06 0.06 0.06 0.07 0.07
7057 3 1 NULL NULL NULL NULL 0.11 0.11 0.11 0.11 0.13 0.13 0.13 0.13 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17
7309 5 1 NULL NULL NULL NULL 0.16 0.16 0.16 0.16 -0.16 -0.16 -0.16 -0.16 0.19 0.19 0.19 0.19 -0.34 -0.34 -0.34 -0.34 0.00 0.00
列在设计上是静态的,我们不再保留 20Q 的财务数据,当新季度到来时,我们将所有数据从左向右移动,并将新值放入 Q0
我目前需要的是上面带有聚合函数的转置版本。
对于选定的公司组(StockCompanyId 的集合),并提供股票指数 (StockIndexId)计算每个季度的平均值,并从最新季度到最新季度呈现。
所以最终的结果应该是这样的:
Quarter Aggregated Value
0 0.53 <-- Average(values for all matched companies and provided stock index)
1 0.71
2 0.81
3 ...
4 ...
5 ...
6 ...
7 ...
8 ...
9 ...
10 ...
11 ...
12 ...
13 ...
14 ...
15 ...
16 ...
17 ...
18 ...
19 ...
20 ...
并将此数据作为 DTO 模型列表发送:
public class DTO
{
public string Quarter {get; set;}
public decimal AggregatedValue {get; set;}
}
List<DTO> ResponseValues
任何人都可以帮助我构建能够满足此要求的 LINQ 查询吗?