SQL语句难题!请教:(100分)

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

LiWD

Unregistered / Unconfirmed
GUEST, unregistred user!
现有一表:
代码 数量 类型
1 2 0
1 3 1
1 7 1
1 4 0
2 5 0
2 9 1
2 2 0
......

怎样得到如下结果:
代码 类型0数量 类型1数量
1 6 10
2 7 9
 
select 代码,sum(case when 类型 0 then 数量 else 0 end) as 类型0数量,
sum(case when 类型 1 then 数量 else 0 end) as 类型1数量
from tablename
group by 代码
 
如果是DB2、Oracle,同意楼上的。

别的数据库不清楚。
 
我用的是Oracle,可是ugvanxk兄的语句出错: 缺少右括号. 怎么回事?
字段类型:
代码 VARCHAR2
数量 NUMBER
类型 VARCHAR2
 
select 代码,sum(case when 类型= 0 then 数量 else 0 end) as 类型0数量,
sum(case when 类型= 1 then 数量 else 0 end) as 类型1数量
from tablename
group by 代码
是不是应该为这样?
 
group by 不能在语句用
 
group by不能用,为什么,
我看天真的可以。
 
Oracle 中Case语法的帮助在哪里? 我怎么死活找不到?
 
不能用group by 老兄!
 
到底怎么能够实现? ugvanxk兄,天真兄,真的不能用group by ?
我用的是Oracle8.
 
我无论怎么执行都是出错,提示:
错误位于第2行:
ORA-00907: 缺少右括号

现在我把情况具体说一下:
数据库: Oracle 8i
有一的表TBRANCH,
字段:
BRANCHCODE 类型varchar2
SUMBALANCE 类型NUMBER
KINDCODE 类型varchar2

有数据:
BRA SUMBALANCE KIN
--- ---------- ---
1 2 0
1 3 1
1 7 1
1 4 0
2 5 0
2 9 1
2 2 0

需要得到如下结果:
BRANCHCODE KINDCODE0数量 KINDCODE1数量
1 6 10
2 7 9

我用ugvanxk兄和天真兄的方法写成如下语句:
SELECT
SUM(case when KINDCODE='0' then SUMBALANCE else 0 end) as KINDCODE0数量,
SUM(case when KINDCODE='1' then SUMBALANCE else 0 end) as KINDCODE1数量,
BRANCHCODE
FROM TBRANCHSAVEDAYREPORT
GROUP BY BRANCHCODE, KINDCODE
执行; 出现错误提示:

SUM(case when KINDCODE='0' then SUMBALANCE else 0 end) as KINDCODE0数量,
*
错误位于第2行:
ORA-00907: 缺少右括号

到底怎么回事? 各位帮帮忙!
 
select distinct a.代码 as 代码,(select sum(a.数量) from yourtable as a inner join
yourtable as b on a.代码=b.代码 and a.类型='0') as 类型0数量,(select sum(a.数量)
from yourtable as a inner join yourtable as b on a.代码=b.代码 and a.类型='1') as 类型1数量
 
大家好:
代码:
SELECT
SUM(case when KINDCODE='0' then SUMBALANCE else 0 end) as KINDCODE0数量,
SUM(case when KINDCODE='1' then SUMBALANCE else 0 end) as KINDCODE1数量,
BRANCHCODE
FROM TBRANCHSAVEDAYREPORT
GROUP BY BRANCHCODE

去掉 group by 中的KINCODE就行了,这在sql7.0上是通过了得出

6 10 1
7 9 2
难道在oracle上不行吗? 我想sql结构化查询语言是一样的把,我不知道,我没学过oracle.

 
我全部试过了,不知怎么回事,都不行,我用的是Oracle8.0.5.00版,大家也是Oracle吗,是不是版本的问题?
同样的语句在MS SQL Server 2000 上通过.
到底怎么回事?
 
是不是Oracle中没有Case语句?
 
难道真的是Oracle中没有Case语句吗?
 
没用过oracle,帮不上忙。
听课。:)
 
在Oracl中还是不行,到底怎么办?
 
别急,我看看。我有环境
 
后退
顶部