主题:急,求两个sql语句,热心人帮我一下
triumph
[专家分:160] 发布于 2006-08-03 08:12:00
产品信息表product 入库单表import
(产品编号) 名称 (入库单编号) 产品编号 数量 日期
101 aa 0801001 101 8 08-01
102 bb 0801002 102 2 08-01
.... 0802001 101 3 08-02
..........
想查询得到这样的结果(求库存还有多少)
产品编号 名称 数量
101 aa 8+3
102 bb 2
收件单表receive 取件单表getbill 员工信息表employees
(收件单id) 员工id (取件单id) 收件单id 业务评价 (员工id) 姓名
0801001 001 0802001 0801001 满意 001 jack
0801002 002 0802002 0801002 一般 002 jhon
0801003 001 0802003 0801003 不满意 .....
0801004 002 0802004 0801004 满意
..... ......
想对员工的服务情况进行统计,得到这样一张统计表
员工id 姓名 满意 一般 不满意
001 jack 1 0 1
002 jhon 1 1 0
回复列表 (共15个回复)
沙发
gggmmtddir [专家分:2690] 发布于 2006-08-03 08:57:00
1.
select 产品编号,名称,b.数量 from product,(select 产品编号,sum(数量) as 数量 from import group by 产品编号) as b where product.产品编号=b.产品编号
2.
你的第二个查询,我想单一的sql语句应该是解决不了的.
板凳
a97191 [专家分:4040] 发布于 2006-08-03 09:44:00
1
declare @product table(产品编号 char(10),名称 char(10))
insert @product select 101,'aa'
union all select 102,'bb'
declare @inport table(入库单编号 char(10),产品编号 char(10),数量 int)
insert @inport select '0801001',101,8
union all select '0801002',102,2
union all select '0802001',101,3
select 产品编号,名称,数量=(select sum(数量) from @inport where 产品编号=a.产品编号) from @product a
3 楼
a97191 [专家分:4040] 发布于 2006-08-03 10:11:00
2
declare @receive table(收件单id char(10),员工id char(10))
insert @receive select '0801001','001'
union all select '0801002','002'
union all select '0801003','001'
union all select '0801004' ,'002'
declare @getbill table(取件单id char(10),收件单id char(10),业务评价 char(10))
insert @getbill select '0802001','0801001','满意'
union all select '0802002','0801002','一般'
union all select '0802003','0801003','不满意'
union all select '0802004','0801004','满意'
declare @employees table(员工id char(10),姓名 char(10))
insert @employees select '001','jack'
union all select '002','jhon'
select 员工id,姓名,满意=(select count(*) from @getbill b where 收件单id
in(select 收件单id from @receive c where 员工id=a.员工id and 业务评价='满意')),
一般=(select count(*) from @getbill b where 收件单id
in(select 收件单id from @receive c where 员工id=a.员工id and 业务评价='一般')),
不满意=(select count(*) from @getbill b where 收件单id
in(select 收件单id from @receive c where 员工id=a.员工id and 业务评价='不满意'))
from @employees a
4 楼
kkzjk [专家分:440] 发布于 2006-08-03 11:01:00
第一个2楼已经解决。
解决第二个。
select 员工id,姓名
,sum(case getbill.业务评价 when 满意 else 0 end) as 满意
,sum(case getbill.业务评价 when 一般 else 0 end) as 一般
,sum(case getbill.业务评价 when 不满意 else 0 end) as 不满意
from receive,getbill,employees
where employees.员工id=receive.员工id
and receive.收件单id=employees.收件单id
group by 员工id,姓名
5 楼
kkzjk [专家分:440] 发布于 2006-08-03 18:12:00
不好意思居然泄漏了。。。。。。
select employees.员工id,姓名
,sum(case getbill.业务评价 when 满意 then getbill.业务评价
else 0 end) as 满意
,sum(case getbill.业务评价 when 一般 then getbill.业务评价
else 0 end) as 一般
,sum(case getbill.业务评价 when 不满意 then getbill.业务评价
else 0 end) as 不满意
from receive,getbill,employees
where employees.员工id=receive.员工id
and receive.收件单id=employees.收件单id
group by employees.员工id,姓名
你再试试!
6 楼
gggmmtddir [专家分:2690] 发布于 2006-08-04 21:31:00
顶楼上的,sql语句写的很棒啊,向你学习
7 楼
triumph [专家分:160] 发布于 2006-08-04 21:50:00
第二句我调式了一下,还是不行啊,不知道还有没有其他方法啊?
8 楼
a97191 [专家分:4040] 发布于 2006-08-05 09:06:00
不是已告诉你吗,怎么不行,你用的是什么数据库
9 楼
triumph [专家分:160] 发布于 2006-08-05 10:03:00
我用的是access数据库,access可以写存储过程的吗?
我想最好是直接用语句写出来
10 楼
a97191 [专家分:4040] 发布于 2006-08-05 11:09:00
哦,改成这样看行不行
select 员工id,姓名,(select count(*) from @getbill b where 收件单id
in(select 收件单id from @receive c where 员工id=a.员工id and 业务评价='满意')) as 满意,
(select count(*) from @getbill b where 收件单id
in(select 收件单id from @receive c where 员工id=a.员工id and 业务评价='一般')) as 一般,
(select count(*) from @getbill b where 收件单id
in(select 收件单id from @receive c where 员工id=a.员工id and 业务评价='不满意')) as 不满意
from @employees a
我来回复