日期:2014-05-17  浏览次数:20365 次

??如何只要一个函数,就返回结果集 ??
传入参数diqu,niandu,

表T1
diqu  jine1  jine2  riqi         flag
北京   100    50     2010-01-10    1
北京   100    30     2010-05-10    1
上海    80    10     2010-01-10    1
上海   200    80     2010-05-10    0
上海    40    20     2010-07-10    1
北京    70    30     2011-01-10    1

如给定diqu参数为全部,niandu参数为2009, 2010, 2011 则统计结果如下:
其中jine1为flag=1的该年度jine1的总和,jine2也相同,1月~12月指此年度该月jine1的合计数,月以riqi判断

diqu  niandu jine1  jine2   1月 2月 3月  4月  5月 6月  7月  8月 9月 10月 11月 12月
全部  2009     0        0    0   0   0   0    0   0   0    0  0   0    0    0
全部  2010    320     110   180  0   0   0  100   0   40   0  0   0    0    0
全部  2011     70      30    70  0   0   0    0   0   0    0  0   0    0    0

如给定diqu参数为北京,niandu参数为2009, 2010, 2011 则统计结果如下:

diqu  niandu jine1  jine2   1月 2月 3月  4月  5月 6月  7月  8月 9月 10月 11月 12月
北京  2009     0        0    0   0   0   0    0   0   0    0  0   0    0    0
北京  2010    200      80   100  0   0   0  100   0   0    0  0   0    0    0
北京  2011     70      30    70  0   0   0    0   0   0    0  0   0    0    0

请问如何根据传入参数,类似(2009,2010,2011; 全部)自动生成上表?

------------------------------------------------
以下是可以统计出diqu为全部结果的SQL,但diqu给定为北京,统计的结果就不对,如何修改下面的SQL,使只调用一次函数,大致用法如下
Select * from dbo.f_Split('全部','2009,2010,2011'),或
Select * from dbo.f_Split('北京','2009,2010,2011') 就能得到上面列出的结果集,选定年度如2009年如没数据也要用0显示出来,一定要一次函数就能生成结果集(要用SQL2000数据库实现)

cre