求解SQL语句(150分)

  • 主题发起人 主题发起人 lsport
  • 开始时间 开始时间
L

lsport

Unregistered / Unconfirmed
GUEST, unregistred user!
有下表
名称 性质 数量
A 11 200
B 12 100
C 23 180
D 32 30
E 44 400
B 43 250
C 24 500
…………………………
其中性质的第二位1、2、3、4分别代表内进、外出、内出、外进,如何把以上数据按名称性质分类汇总输出到另一个表中。表结构为
名称 内进 外出 内出 外进 总计
A 200 0 0 0 200
B 0 100 250 0 350
C 0 0 180 500 680
D 0 30 0 0 30
E 0 0 0 400 400
…………………………………………….
请问用SQL语句如何实现?

 
我想你可以考虑一下使用临时表.
分4句SQL分别插入内进,外出,内出,外进.
用1句SQL进行总计.
 
做交叉表吧,一条语句搞不定的
 
select name,
sum(case when property-property/10*10=1 then property else 0 end ) as 内进,
sum(case when property-property/10*10=2 then property else 0 end ) as 外出,
sum(case when property-property/10*10=3 then property else 0 end ) as 内出,
sum(case when property-property/10*10=4 then property else 0 end ) as 外进,
sum(property) as 总计
from table



 
好像要加上 group by name
 
不好意思,刚才忘了加上group by name
 
select namee,sum(case xz/10 when 1 then coun else 0 end) as 内进,
sum(case xz/10 when 2 then coun else 0 end) 外出,
sum(case xz/10 when 3 then coun else 0 end) 内出,
sum(case xz/10 when 4 then coun else 0 end) 外进
from #tmp_table group by namee
SQL SERVER2000测试通过。
 
忘了加合计了:CONN是你的数量,XZ是性质
select namee,sum(case xz/10 when 1 then coun else 0 end) 内进,
sum(case xz/10 when 2 then coun else 0 end) 外出,
sum(case xz/10 when 3 then coun else 0 end) 内出,
sum(case xz/10 when 4 then coun else 0 end) 外进,
sum(coun) as 合计
from you_table group by namee
 
不好意思,刚才我的答案中的then后面的property及总计中的property应该改为qty,即是数量
 
你的数据库设计太丑
 
首先谢谢各位,本人用的是ORACLE8,用以上几位解答在oracle8 SQL语句编译到case when .....时
出错,错误为:select name,sum(case xz/10 when 1 then ds else 0 end) as 内进
*
错误位于第1行:
ORA-00907: 缺少右括号
不知道怎么办?

 
多人接受答案了。
 

Similar threads

D
回复
0
查看
796
DelphiTeacher的专栏
D
S
回复
0
查看
855
SUNSTONE的Delphi笔记
S
S
回复
0
查看
783
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部