SQL数据表字段→ 项目ID     月份    项目值
数据→   1        1月
        1        2月
        1        3月
        1        4月
        1        5月
        1        6月
        1        7月
        1        8月
        1        9月
        1        10月
        1        11月
        1        12月
         2        1月
        2        2月
         2        3月
         2        4月
         1        5月
         ……
表中数据大概就这样。
现在希望把月份这个字段的数据做为列。绑定到DataGrid.
显示成这样
   项目名    一月  二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月
      1
     2
     3
     4
    ……列是从1月到12月都做为\。。
现在的问题是,一个项目ID对应12条记录,所以有很多个1月12月...
不知道咋办...
 望高手帮忙解决下。 ...在线等...~! 急救....

解决方案 »

  1.   

    最好先用sql实现,再连接数据。 用视图或存储过程比较方便
      

  2.   

    这是一个明显的行转列的SQL题目。。
    可以如下:
    create table kkk(项目id int,月份 varchar(10),项目值 int)
    insert into kkk select 1,'1月',1
    insert into kkk select 1,'2月',2
    insert into kkk select 1,'3月',3
    insert into kkk select 1,'4月',4
    insert into kkk select 1,'5月',5
    insert into kkk select 1,'6月',6
    insert into kkk select 1,'7月',7
    insert into kkk select 1,'8月',8
    insert into kkk select 1,'9月',9
    insert into kkk select 1,'10月',10
    insert into kkk select 1,'11月',11
    insert into kkk select 1,'12月',12
    insert into kkk select 2,'1月',21
    insert into kkk select 2,'2月',22
    insert into kkk select 2,'3月',23
    insert into kkk select 2,'4月',24
    insert into kkk select 2,'5月',25
    insert into kkk select 2,'6月',26
    insert into kkk select 2,'7月',27
    insert into kkk select 2,'8月',28
    insert into kkk select 2,'9月',29
    insert into kkk select 2,'10月',30
    insert into kkk select 2,'11月',31
    insert into kkk select 2,'12月',32创建存储过程:
    create proc wsaa
    as
    declare @sql varchar(8000)
    set @sql='select  项目id'
    select @sql=@sql+',['+月份+']=sum(case 月份 when '''+ 月份 + ''' then 项目值 else 0 end)' from kkk group by 月份 
    print @sql
    set @sql=@sql+' from kkk group by 项目id '
    exec(@sql)调用存储过程
    exec wsaa