注册 登录
编程论坛 SQL Server论坛

SQL查询语句,急着用.

davyxjc 发布于 2011-05-28 09:37, 713 次点击
有两个数据表,A表是记录生产排程表,B表是记录实际生产记录表.
A表                                                                        B表
工单号    产品编码     日期         计划数量      计划工时                工单号      产品编码      日期         实际数量      实际工时
GD002        A         2011-05-28     300            40                    GD002       A            2011-05-28     110         10
GD003        B         2011-05-28     800            20                    GD004       C            2011-05-28     700         22
                                                                           GD002       A            2011-05-28     200         35
现在要做一个查询,结果如下:
工单号    产品编码      日期         计划数量     计划工时      实际数量       实际工时
GD002        A          2011-05-28   300             40         310            45   (按排程生产)
GD003        B          2011-05-28   800             20         0              0    (有排程没生产)
GD004        C          2011-05-28   0               0          700            22   (没排程有生产)

请问要得到以上结果,应该怎样写SQL语句???

[ 本帖最后由 davyxjc 于 2011-5-28 09:39 编辑 ]
5 回复
#2
panyanpan2011-05-28 10:03
select  (Case When A.工单号 is not null Then A.工单号 else C.工单号 End),
        (Case When A.产品编码 is not null Then A.产品编码 else C.产品编码 End),
        (Case When A.日期 is not null Then A.日期 else C.日期 End),
        (Case When A.计划数量 is not null Then A.计划数量 else 0 End),
        (Case When A.计划工时 is not null Then A.计划工时 else 0 End),
        (Case When C.实际数量 is not null Then C.实际数量 else 0 End),
        (Case When C.实际工时 is not null Then C.实际工时 else 0 End)
from A full outer join (select 工单号,产品编码,日期,sum(实际数量) as 实际数量,sum(实际工时) as 实际工时 from B group by 工单号,产品编码,日期) C
on A.工单号=C.工单号

只有本站会员才能查看附件,请 登录


[ 本帖最后由 panyanpan 于 2011-5-28 10:06 编辑 ]
#3
davyxjc2011-05-28 11:39
非常感谢!
#4
lstk5552011-05-30 21:43
select a. 工单号,a.产品编码,日期,sum(b.实际数量) as 实际数量,sum(b.实际工时) as 实际工时,a.计划数量,a.计划工时 from a,b
where a.工单号=b.工单号


这样就可以了!
#5
davyxjc2011-05-31 11:05
回复 4楼 lstk555
你这条语句不行嘀......
#6
lyr0002011-06-07 13:26
select a.dh 工单号,a.bm 产品编码 ,a.rq 日期,sum(a.jhsl) 计划数量,sum(a.jhgs) 计划工时,sum(a.sjsl) 实际数量,sum(a.sjgs) 实际工时
from
(
select dh,bm,rq,sum(jhsl) jhsl,sum(jhgs) as jhgs ,0 as sjsl,0 as sjgs  from #a group by dh,bm,rq
union
select dh,bm,rq,0 as jhsl,0 as jhgs,sum(sjsl) sjsl,sum(sjgs) sjgs from #b group by dh,bm,rq)a
group by a.dh,a.bm,a.rq
1