http://www.csdn.net/expert/topic/620/620831.xml?temp=.9983942

解决方案 »

  1.   

    你这个TOPIC是有限的,用CASE WHEN(SQL SERVER,DB2)或者IIF(ACCESS)或者DECODE(ORACLE),就能解决。
      

  2.   

    我看楼主的意思就是说再TOPIC不是有限的情况下,该如何处理了!
    因为做这样的表结构就是为了体现一个灵活性和扩展性!
    如果把TOPIC给固定了,那么这样设计岂不是自找麻烦?
      

  3.   

    如果不定,那吗我想就要自己写代码了,我这里有一个java版的但是还没有调试。没有办法给你了。
      

  4.   

    http://www.csdn.net/expert/topic/508/508081.xml?temp=.4654962
    这个帖子说的很清楚,看来是一个SQL语句搞不定的!
      

  5.   

    正如wylyf(李寻欢) 所说的,我的topic肯定不是固定的,要不然,我直接将topic的内容作为字段,岂不更爽哉!所以这样case when 不行了就。
    我觉得好像没有方法用sql语句实现!难道这真是sql极限了吗?
      

  6.   

    这个东西在oracle中可以用一个sql语句实现,look:
    select no,date,
           sum(decode(topic,身高(厘米),grade))   身高(厘米),
           sum(decode(topic,体重(千克),grade))   体重(千克),
           sum(decode(topic,血压(高压),grade))   血压(高压)
      from table1 
     group by no,date;
      

  7.   

    这个肯定是不行的,
    SQL其实是表间的笛卡儿集、并、交、补、投影操作。你的要求肯定不可能使用这五种操作完成,也就不可能完成。这个不会有人还要去证明吧
      

  8.   

    我以前用的方法是:写存储过程,在存储过程中实现。现在我决定用动态生成case when 语句的方法来实现。大家觉得如何?
      

  9.   

    我曾经也遇到过这个问题,最后我给出的解决方案如下:
    先创建一张表,然后在动态添加这个表的字段
    select *  into  newtable from oldtable/*首次添加表*/alter table newtable
    add newcolumn varchar(255)/*更改表的字段,最好用游标循环添加*/update newtable set newcolumn =/*更新数据*/