表 A ODR ODR_SPEC DANJIA SUU NUM NUM2 TEL TEL2 p0001 1 100 10 ddd rrr 155 3333 p0001 2 200 10 eee rrt 144 3663 p0002 1 200 10 fff rrr 155 3333 p0002 2 300 10 ffw ddd 4 444 p0003 1 150 10 ddd rrr 155 3333 p0003 2 30 10 ddd rrr 155 3333 我要得到 ODR 一样的时候的 DANJIA 之合, ODR ODR_SPEC DANJIA SUU NUM NUM2 TEL TEL2 p0001 1 300 10 ddd rrr 155 3333 p0001 2 300 10 eee rrt 144 3663 p0002 1 500 10 fff rrr 155 3333 p0002 2 500 10 ffw ddd 4 444 p0003 1 180 10 ddd rrr 155 3333 p0003 2 180 10 ddd rrr 155 3333 这个sql 最有效率的方法写的话?
解决方案 »
- 公司要求我13天内完成一个OA系统
- java关键词处理
- javawebstart 下载错误是怎么回事?知道的告诉一哈!
- 急!java.lang.NoClassDefFoundError: org/hibernate/HibernateException
- 两个jsp语句的区别?
- 怎么实现表单提交过后给处理程序的是个类试map的东东?
- 通过ajax用jsonp跨域取服务器一个文件夹下的图片,结果谷歌浏览器和ie报不安全脚本,被阻止了。
- 关于web打印的新问题,我用的是scriptx,怎么可以禁止打印时把按钮也一起打出来呢?? 代码如下
- easy question
- import的问题
- struts2 迭代 map<String,List>
- SERVLET+JSP处理进销存问题
(select ODR,sum(DANJIA) DANJIA from A GROUP BY ODR) t2 WHERE t1.ODR=t2.ODR
这个sql没有测试过,楼主可以试一下。思路通过构造一个计算好单价的子查询做联合查询。
select A.ODR_SPEC as ODR_SPEC,(A.DANJIA+B.DANJIA)as NEW_DANJIA from A inner Join B on A.ODR_SPEC = B.ODR_SPEC
FROM TEST a,(select odr,sum(danjia) danjia from test group by odr) b
where a.odr = b.odr
如果是oracle,那么这个问题很简单:
select ODR,
ODR_SPEC,
sum(DANJIA) over(partition by odr) DANJIA,
SUU,
NUM,
NUM2,
TEL,
TEL2
from A;over窗口函数在db2和sqlserver中也有,用法基本相似。