向各位兄弟请教如何实现对数据库这样的读取:
如:
   数据库结构
    name   size  count
     abc    M     120
     cde    L     250
     ufg    S     300
     abc    S     210
 
   在DBGrid显示为
   
标题->   标号    S     M     L
         abc    210   120
         cde                250
         ufg    200
  并且要求DBGrid显示的、行列随数据库记录的增减而改变。
请问各位这应如何实现,有没有哪个第三方控件可以实现的,谢谢先!

解决方案 »

  1.   

    不知是用什么数据库
    如果是oracle
    可以用decode实现
    select 
    name as '标号',
    max(decode(size,'S',a24)) S,
    max(decode(size,'M',a24)) M,
    max(decode(size,'L',a24)) L
    from my_table
    group by name;
      

  2.   

    如果SQLSERVER
    SELECT name AS '标号', 
    MAX((CASE size WHEN 'S' THEN [count] ELSE 0 END)) AS S, 
    MAX((CASE size WHEN 'M' THEN [count] ELSE 0 END)) AS M, 
    MAX((CASE size WHEN 'L' THEN [count] ELSE 0 END)) AS L
    FROM mytable
    GROUP BY name
      

  3.   

    同意,觉得是最好的方法 ;也可以用 union 联合,上面方法最好 
      

  4.   

    这样是可以显示,但在DBGrid上无法修改,更别说保存了,不知有别的办法可以修改保存的,谢谢先!