这个SQL怎么写?(200分)

  • 主题发起人 主题发起人 new_delphi
  • 开始时间 开始时间
N

new_delphi

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个表TABLE1
NAME CHAR(7)
TOTAL DECIMAL(10,2)

记录内容如下:
name total
X012345 50
X123456 100
Z012345 1000
Z012333 500
Z023456 2000
Z034567 1000
M012344 5000

现在要统计得出如下结果
X 150
Z01 1500
Z02 2000
Z03 1000
M 5000
那么SQL语句怎么写?
 
select sum(total) from table1 group by left(name,3)
 
to zengr:
你试过吗。他需要的结果是X而非X01/M01.....

用一条SQL,怕没戏。
 
select left(name,3),sum(total) from table1 where left(name,1)='Z' group by left(name,3)
union select left(name,1),sum(total) from table1 where left(name,1)<>'Z' group by left(name,1)
 
问题是,并不仅仅是以‘Z’开头的才有三位,可能还有
G0,G1等啊!
 
这个数据库谁设计的?把他(她)开掉
或则向老总反映,这种数据库规划人员不能要
居然设计成这个样子
 
这种数据库好象有点那个!!!
居然一点规律也没有!
<h1>哎...</h1>
 
如此复杂的东东,用程序吧。
 
不如这样,使用一个表来存储你的名字代表,再根据这些值来进行相关处理
 
这种数据库规划太.........
没办法...
试试........

begin

select left(name,3),sum(total)
into tmp(临时库) from table1
where left(name,1)='Z' group by left(name,3)

insert tmp(临时库)
select left(name,1),sum(total)
from table1
where left(name,1)='Z' group by left(name,1)

insert tmp(临时库)
select left(name,1),sum(total)
from table1
where left(name,1)='M' group by left(name,1)

select * from table1

end
 
我觉得要用程序写,还不如让你的数据库规划人员,在表中另外增加一个字段,
用于存放相应的特征如
有一个表TABLE1
NAME CHAR(7) TOTAL DECIMAL(10,2)
记录内容如下:
name total Flag
X012345 50 X
X123456 100 X
Z012345 1000 Z01
Z012333 500 Z01
Z023456 2000 Z02
Z034567 1000 Z03
M012344 5000 M
G012345 10000 G0
G123456 20000 G1
这样的话,对数据库 本身也好!
 
改改数据库结构吧!
 
改结构容易实现
 
多人接受答案了。
 
后退
顶部