SQL问题,请帮助!(2分)

  • 主题发起人 主题发起人 maomao888
  • 开始时间 开始时间
M

maomao888

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在有一堆物料编号(WLBH):比如:X21010001,X21010002,X21010003。。。。;X31010001,X31010002,
X31010003。。。;X41010001,X41010002。。。。X41010010;X5101。。。;X6101。。。等等,几千条
并且每一条,如X21010001(WLBH)都对应一个价格(PRICE),我要算出每一个物料编号(WLBH)*价格(PRICE)
同时我相算出每一段编号:如X21010001。。。。X21010010这一段的SUM(WLBH*PRICE),X31010001。。。。X31010010的
SUM(WLBH*PRICE),和如X41010001。。。。X41010010这一段的SUM(WLBH*PRICE),
并将结果同时对应我的报表中的CPCZ(产品产值)字段,怎样在一个SELECT 。。。WHERE中实现?
谢谢
 
物料编号*价格 得到的是什么呢?
 
不好意思,该特料编号所对应的数据(SL)*PRICE
 
妹妹,就出2分呀,是不是没分了,要我给你一点吗?要的话说吧
 
select sum(sl*price) from table where wlbh between 'X31100001' to 'X31010010'
 
substr函数去查一查
 
select left(wlbh,7),sum(sl*price) from table group by left(wlbh,7)
 
根据Brave的启发
select * from
(select sum(sl*price) from table where wlbh between 'X21010001' to 'X21010010'
union
select sum(sl*price) from table where wlbh between 'X31010001' to 'X31010010'
union
select sum(sl*price) from table where wlbh between 'X41010001' to 'X41010010')
 
select left(b.wlbh,5) ,sum(a.drcl*c.jhdj) from db2admin.t_scrbmx a,db2admin.t_wldy b,db2admin.t_jhjgmx c
where b.wlbh=c.wlbh and a.wlbh=b.wlbh
group by left(b.wlbh,5)
该语句执行显示:‘SQL0134N 字符串列、主变量、常量或函数 "Group by column 1" 使用不当。
SQLSTATE=42907
请大家看看哪里错了?’
 
select * from
(select left(b.wlbh,5) AS l_wlbh,sum(a.drcl*c.jhdj) AS l_sum from db2admin.t_scrbmx a,db2admin.t_wldy b,db2admin.t_jhjgmx c
where b.wlbh=c.wlbh and a.wlbh=b.wlbh)
group by l_wlbh
 
不行,明天再说吧,还是说WLBH没有在GROUP BY 指定,或者不在SELECT ,HAVING子句中存在。
 
报错是db2的,字符串太长了
不知道什么原因
db2 group by 后可以加left函数
 
如果用第一句的话,是报这个错啦!好了,各位,我要休息啦,明天再见啦!或许明天就明白啦!
谢谢各位:GG们啦!报错如下:
“SQL0119N SELECT、HAVING 或 ORDER BY 子句中指定的以 "L_WLBH" 开始的表达式未在
GROUP BY 子句中指定,或者,此表达式在带列函数的 SELECT、HAVING 或 ORDER BY 子句
中存在,但却未指定 GROUP BY 子句。 SQLSTATE=42803”
 
我的SQL语句:
select b.wlbh,b.wlmc,a.drcl*c.jhdj,0 from db2admin.t_scrbmx a,db2admin.t_wldy b,db2admin.t_jhjgmx c
where b.wlbh=c.wlbh and a.wlbh=b.wlbh
group by b.wlbh,b.wlmc
union all
select b.wlbh,b.wlmc,0,sum(a.drcl*c.jhdj) from db2admin.t_scrbmx a,db2admin.t_wldy b,db2admin.t_jhjgmx c
where b.wlbh=left(ltrim(b.wlbh),5) and b.wlbh like 'X%' and b.wlbh<>left(ltrim(b.wlbh),3)
group by b.wlbh,b.wlmc
在我的物料信息库里面的物料编号是这样的:首先有X2101四位,对应的是物料大类,然后,后面紧根的是具体的物料编号:比如:X21010001,X21010002。。。;一直到X51010001。。。。到后面好多啦,每一种X5101,X6101。。。等对的都是大类,然后跟的是具体物料。
而我的每一个具体的物料编号,对应另一个库里面相同编号的数据,同时,相同的具体的物料纺号,也对应第三个库的单价。我现在要统计,每一个物料大类的产值
因为上面的SQL有问题:我觉得我刚才的程序里无法实现,因为第一个可以算出每个具体物料的价格*数据,但没有算出大类的产值
在第二句里,每个具体物料的编号却没有对应上你说是吗?因为它只取大类的编号,但该编号去没有价格的
所以我想用一个复合查询,子查询里是第一个SQL,在求SUM(单价*数量)时,做为最后一级查询,要SUM的结果,然后给物料大类。各位帮帮啦!
 
我不知道错在哪
select left(wlbh,3),count(*) from db2admin.t_wldy group by left(wlbh,3)
应该不会出错呀
 
SELECT left(UserIP,3), SUM(UserID)
FROM asasas
group by left(UserIP,3)

我使用如上语句,在ACCESS中执行正确。
不知你使用的什么数据库,能否邮寄一份来,也好在上面试试。
 
妹妹的这一句有问题了,看看
where b.wlbh=left(ltrim(b.wlbh),5) and b.wlbh like 'X%' and b.wlbh<>left(ltrim(b.wlbh),3)
~~~~
改为
where b.wlbh=left(ltrim(b.wlbh),5) and b.wlbh like "X%" and b.wlbh<>left(ltrim(b.wlbh),3)
试试
 
我用你发过来的两个表试着没有问题
select left(b.wlbh,5) ,sum(c.jhdj)
from t_wldy b, t_jhjgmx c
where b.wlbh=c.wlbh
group by left(b.wlbh,5)
结果为 X0100 2706
X0200 1367.1
看来不是SQL语句的问题
 
where b.wlbh=left(ltrim(b.wlbh),5) and b.wlbh like 'X%' and b.wlbh<>left(ltrim(b.wlbh),3)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这两个条件也有问题了
 
真的好麻烦你啦,多谢啦.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
601
import
I
I
回复
0
查看
582
import
I
后退
顶部