求SQL语句,帮忙看看错在什么地方?
AA表:
DEP,ID,SPEC,SAL_NUM
部门,货号,规格,销售数量
100,A001,99-00,122
100,A001,98-00,205
200,A012,11-00,64
200,A013,99-00,870
。。。。。。。。。。。
BB表:
DEP,ID,SPEC,KC_NUM
部门,货号,规格,库存数量
100,A001,99-00,500
100,A001,98-00,1000
200,A012,11-00,200
200,A013,99-00,2000
。。。。。。。。。。。。
货号-规格 两者定位唯一值
求1:
货号,规格,部门1销售数量,部门2销售数量 .。。。。。。
我用以下语句可以实现:
select a.ID,a.SPEC,
sum(case a.dep when '100 ' then a.SAL_NUM) as 部门100销售
sum(case a.dep when '200 ' then a.SAL_NUM) as 部门200销售
。。。。。。。。
from AA a
group by a.ID,a.SPEC
order by a.ID,a.SPEC
求2:
货号,规格,部门1销售数量,部门1库存数量,部门2销售数量,部门2库存数量.。。。。。。
我用以下语句得到的数据是不对的,不知道错在什么地方,望指点!
select a.ID,a.SPEC,
sum(case a.dep when '100 ' then a.SAL_NUM) as 部门100销售
sum(case b.dep when '100 ' then b.KC_NUM) as 部门100库存
sum(case a.dep when '200 ' then a.SAL_NUM) as 部门200销售
sum(case b.dep when '200 ' then b.SAL_NUM) as 部门200库存
。。。。。。。。
from AA a,BB b
where a.ID=b.ID and a.SPEC=b.SPEC
group by a.ID,a.SPEC
order by a.ID,a.SPEC
------解决方案--------------------case .. when ... then ...
when ... then ..
else
...
end ---end丢了
------解决方案--------------------select a.ID,a.SPEC,
sum(case a.dep when '100 ' then a.SAL_NUM end) as 部门100销售
sum(case a.dep when '200 ' then a.SAL_NUM end) as 部门200销售
。。。。。。。。
from AA a
group by a.ID,a.SPEC
order by a.ID,a.SPEC
case 后要又 end
------解决方案--------------------select a.[ID],a.SPEC,
sum(case a.dep when '100 ' then a.sal_num end) as 部门100销售,
sum(case b.dep when '100 ' then b.kc_num end) as 部门100库存,
sum(case a.dep when '200 ' then a.sal_num end) as 部门200销售,
sum(case b.dep when '200 ' then b.kc_num end) as 部门200库存 from AA a,BB b
where a.[ID]=b.[ID] and a.SPEC=b.SPEC
group by a.[ID],a.SPEC
order by a.[ID],a.SPEC
列名错了
------解决方案--------------------应该没错。提示什么错误?
------解决方案--------------------不对?怎么个不对法?把数据列出来。还有一点,我不明白你为什么这么写,你自己说已经用 'id ', 'spec '做主键或者说确定唯一值,然后再用这两个列分组,不是多此一举吗?你的第一个语句直接写成
select a.ID,a.SPEC,
(case a.dep when '100 ' then a.SAL_NUM) as 部门100销售
(case a.dep when '200 ' then a.SAL_NUM) as 部门200销售
........
from AA a
order by a.ID,a.SPEC
不就行了吗?
你写的语句我试过了,结果是正确的。也许别的地方(比如你省略的地方)有问题?
------解决方案--------------------select a.ID,a.SPEC,
sum(case a.dep when '100 ' then a.SAL_NUM end) as 部门100销售,
sum(case b.dep when '100 ' then b.KC_NUM end) as 部门100库存,
sum(case a.dep when '200 ' then a.SAL_NUM end ) as 部门200销售,
sum(case b.dep when '200 ' then b.SAL_NUM end ) as 部门200库存,
。。。。。。。。
from AA a inner join BB b on a.ID=b.ID and a.SPEC=b.SPEC
group by a.ID,a.SPEC