在SQL Server中创建动态列数

时间:2014-07-15 17:56:37

标签: sql sql-server

我有以下数据以及我正在处理的其他一些其他表。

id ClinicId   MonthsInOperation Budget Revenue  
1  1232       12                  2000
2  1534       8                   3500
3  1767       10                  2500
4  1232       13                  3000
5  1534       2                   4000

我最终需要生成的是(表格结构):

ClinicInfo(Static Columns) + Selected Month------------->> End of Year(Dynamic Columns) 

Dynamic Columns将包含特定月份的预算信息(例如Table structure + Data):

ClinicInfo(Static Columns) + Feb 2013-------------------->> December 2013
--------------------------   2000+-------+-------------------+ 4500

我之前没有使用PIVOT,不确定这是否是我需要的。

1 个答案:

答案 0 :(得分:1)

直接从SQL Server生成这样的报告很难。 PIVOT的问题在于它只适用于静态列集。如果您希望输出列是动态的,PIVOT(在SQL中)将无法帮助您。

我还假设您有一些其他表格,其中包含每个诊所每月分解的预算信息。

老实说,使用标题/详细信息类型布局在某种类型的报告解决方案(Active Reports,SSRS,Crystal)中执行此操作可能是最简单的方法。或者在一些非SQL中间层(Java,.NET等)中构建它,因为这样你就可以从不同的数据片段(基本的诊所信息,范围的月份,那些月的数据)中将它拼凑在一起。您可以在原始TSQL中执行此操作,但根据我的经验,可重复的性能最为粗略。

可能不是你想要的答案,但希望能给你一些想法。