出库单按订单打单,一张订单可以有关联多张出库单,两张表按订单号(ORDERNO)关联,订单表A ,出库单表B
比如:订单号A01,订单数量100,按订单出库单有两张,出库单号c01 数量20,另一张出库单号c02 数量80,写一语句能生成如下表:订单号 订单数量 出库单号 出库数量
A01 100 C01 20
C02 80
应该怎样写。
比如:订单号A01,订单数量100,按订单出库单有两张,出库单号c01 数量20,另一张出库单号c02 数量80,写一语句能生成如下表:订单号 订单数量 出库单号 出库数量
A01 100 C01 20
C02 80
应该怎样写。
http://www.dbtuning.cn
主营:中小企业数据库管理、优化、调校服务
========================================
订单 a right join 出库单 b on a.订单号=b.订单号/
select a.订单号,a.订单数量,b.出库单号,b.出库数量 from
订单 a full outer join 出库单 b on a.订单号=b.订单号
A01 100 C01 20
A01 100 C02 80
这样的话就会重复订单数量
我是想这样的结果:
订单号 订单数量 出库单号 出库数量
A01 100 C01 20
C02 80
數據庫中顯示的是:
A01 100 C01 20
A01 100 C02 80
select a.订单号,a.订单数量,b.出库单号,b.出库数量 from 订单 a 出库单 b where a.订单号=b.订单号如果有訂單未出庫的也顯示的話,就改左連接.
select * from (
select did 订单号,订单数量, cid 出库单号, 出库数量 from b t where not exists(select 1 from b where did<t.did and cid=t.cid)) t1 inner join a on t1.did = a.did
union all
select did 订单号,订单数量, cid 出库单号, 出库数量 from b t where exists(select 1 from b where did<t.did and cid=t.cid)) t2 left join
(select top 0 * from a) t3 on t2.did=t3.did
) t4 order by 订单号,出库单号
A01 100 C01 20
C02 80
你是想在绑定数据的时候,在页面中显示么?
还是在数据库中要显示这样的结果?
订单号=CASE WHEN 出库单号=(SELECT MIN(出库单号) FROM TC WHERE 订单号=A.订单号) THEN A.订单号 ELSE '' END,
订单数量=CASE WHEN 出库单号=(SELECT MIN(出库单号) FROM TC WHERE 订单号=A.订单号) THEN A.订单数量 ELSE '' END,
B.出库单号,
B.出库数量
FROM TB A
LEFT JOIN TC B
ON A.订单号=B.订单号
订单号=CASE WHEN 出库单号=(SELECT MIN(出库单号) FROM TC WHERE 订单号=A.订单号) THEN A.订单号 ELSE '' END,
订单数量=CASE WHEN 出库单号=(SELECT MIN(出库单号) FROM TC WHERE 订单号=A.订单号) THEN A.订单数量 ELSE '' END,
B.出库单号,
B.出库数量
FROM TB A
LEFT JOIN TC B
ON A.订单号=B.订单号
from A a inner join B b on a.orderno=b.orderno
create table t1 (id varchar(3),num int)create table t2 (id2 varchar(3),ch varchar(3) ,num2 int)
insert t1 select 'A01',100
insert t2 select 'A01','c01',20 union all
select 'A01','c02',80
declare @n varchar(3)
declare @nu int
select 'id' =
case when t2.num2 != (select min(t2.num2) from t2 where t2.id2 = t1.id) then '' else t1.id end,
'num' =
case when t2.num2 != (select min(t2.num2) from t2 where t2.id2 = t1.id) then '' else t1.num end,
t2.ch,
t2.num2 from t1 left join t2 on t1.id = t2.id2
drop table t1
drop table t2