从下表中算出数据结果来,下表表名为“交叉表结果”货号    出货价格    20060214    20060215    20060216
1000021   0.613                                        6756
1000021   0.612                                        5912            4321
1000021   0.611                                        37628          2315
1000021   0.61                                          7928            3428
1000021   0.609               3494                 9990            6790
1000021   0.608               17181               4366
1000021   0.607               9958                 2066
1000021   0.606               935
1000021   0.605               859
1000021   0.601
1000022   1.3                                           457
1000022   1.299                                       887                865
1000022   1.298                                       1332
1000022   1.297              540                   607               1756
1000022   1.296              607                   1043             976
1000022   1.295              1280                 2231             735
1000022   1.293              976                   900
1000022   1.291              507
1000022   1.29                420
1000022   1.289
要实现的查询结果是:货号     20060214          20060215      20060216    
000021          a1                        b1                   c1
000022          a2                        b2                   c2
000023          a3                        b3                   c3其中20060214列的数据我能这样算出来:SELECT 货号, (MAX(出货价格) - MIN(出货价格)+(case left("货号",1) when 1 then 0.001 else 0.01 end)) / SUM([20060214]) 
      AS '20060214' 
FROM dbo.交叉表结果
WHERE [20060214] IS NOT NULL
GROUP BY 货号
ORDER BY 货号
现在请教各位,怎样得到一张表中能包含很多列的数据(比如象示例表一样,含有20060215、20060216、20060217·····等等)
急!
谢谢高人指点!bow!

解决方案 »

  1.   

    如果你的列命名是没有什么规则的,你说的是做不到的
    如果你的列命名是有规则的都类似20060216这样的,那样你可以借用系统表,找到你需要的列,是可以做到你需要的效果的
      

  2.   

    俺是菜菜,不太清楚你所说的“借用系统表”,烦请详述之。
    另,列名的命名规则是按日期来的,但不是每天都有销售数据,所以有时又会有几天是空的。
      

  3.   

    有否办法设计一个自定义函数来实现呢?
    或者,借助临时表有没办法实现呢,请高人帮我看看。