我有以下情况: 生成具有动态列的数据透视表,我可以通过在客户端或存储过程中生成动态sql来管理
然后,我需要根据枢轴已计算的值计算其他值。
这是用于生成过程中所有步骤的sql:
select 'Union and repivot' as src,* from (
select
departmentStats2.Facility,
departmentStats2.Department,Departmentstats2.period,x.stat,x.value
from
departmentStats2
cross Apply(
values(Facility,Department,Period,'1_Sales',Sales),
(Facility,Department,Period,'2_Cost',Cost),
(Facility,Department,Period,'3_GrossProfit',GrossProfit),
(Facility,Department,Period,'4_GPP',GPP)
) as x(Facility,Department,Period,Stat,[Value])
)as P
pivot(
sum(value)
for Period in (January, February, March)
)as P
order by Facility,department,Stat
我只为样本提供了三个句点。
我毫不怀疑我可以随意生成这种格式的SQL。
考虑到我的数据源将是静态的(每日更新)并且索引严重,我预计不会出现任何实际问题。我还没有准备好测试的完整数据集,但是当我做
时我会更新q枢纽奥运会的原因是最终输出实际上是电子表格,它使用索引/匹配来按设施/部门/名称查找每个统计数据的值,以生成图形和图表
意见? 明显的缺陷? 通过在运行时生成一个类,在C#中做得更好吗? 请记住,这个想法是提供基于已知统计数据添加统计数据的能力,而且工作量最小。
这是使用交叉应用而不是全部联合
执行最后一步的更好方法tickPixelInterval
这 http://sqlsunday.com/2014/03/02/unpivot-using-cross-apply/