当前位置:编程学习 > VB >>

VB 同一字段相同值合并,并生成新表且有新的字段名

如下:
id        批次号  品牌    数量         
  100     1745   OU      21 
  101     1745   PS      23
  102     1745   LK       50
  103     1746   OU      11
  104     1746   PS      12
  105     1746   LK      21
    
  要实现如下功能,使用sql语句,写成下表   
  id      批次号  OU  PS  LK           
  100     1745   21  23  50       
  101     1746   11  12  21       
  
小弟实在示黔驴技穷了,想了好久没想出来,还请各位帮忙啊!谢谢!
提示这只是数据库一小部份,真正的字段有很多.
我原来编的程序只采取这种方法如:
Data1.Database.Execute "........."
请使用此方法实现.
因为我不喜欢用ADOC或DAO,怕麻烦
升级VB SP6后DATA控件仍然可以访问ACCESS2000
--------------------编程问答-------------------- 根据你的数据库,按下面的方式逐个SQL:
Create table t2 (id autonumber, 批次号 varchar(4), OU int, ps int, lk int ...);
insert into t2 (批次号) select 批次号 from t1 group by 批次号 order by 批次号;
update t2 set OU = SUM(t1.数量) FROM t1 where t1. 批次号=t2. 批次号 and t1.品牌='OU';
update t2 set PS = SUM(t1.数量) FROM t1 where t1. 批次号=t2. 批次号 and t1.品牌='PS';
...
--------------------编程问答-------------------- update t2 set OU = SUM(t1.数量) FROM t1 where t1. 批次号=t2. 批次号 and t1.品牌='OU';
这句不行始终报警不知道哪有问题,再帮帮看下,上面两句没问题,都成生了.
我改成用DAO操作 --------------------编程问答-------------------- 根据你的数据库自己改成合法的语句,反正思路已经有了。 --------------------编程问答-------------------- db.Execute "update t2 set PA=myrejectdata.REJECT_QTY where myrejectdata.LOT_NBR=t2.LOT_NBR and myrejectdata.REJECT_CATG='PA'"
看看我哪里出了错 --------------------编程问答-------------------- db.execute "update t2 set OU = t1.数量 FROM t1 where t1. 批次号=t2. 批次号 and t1.品牌='OU'"
还是不行也试过了 --------------------编程问答-------------------- 自己搞定,你的方法不对有问题。要使用外连接
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,