表item
列serialno clerkcode
1001 1
1001 1
1002 2
1003 1
表pay
serialno amount payflag
1001 10 0
1001 15 1
1002 20 0
1002 10 1
1003 15 2
要求查询结果为
clerkcode amount payflag
1 10 0
1 15 1
2 20 0
2 10 1
1003 15 2
也就是结果中amount payflag还是pay中的值(完全照搬pay的这2个字段.行数不能多),其实就是查询结果多一个clerkcode字段。这个字段用item的代替在item表里面serialno 和 clerkcode是一一对应的。
列serialno clerkcode
1001 1
1001 1
1002 2
1003 1
表pay
serialno amount payflag
1001 10 0
1001 15 1
1002 20 0
1002 10 1
1003 15 2
要求查询结果为
clerkcode amount payflag
1 10 0
1 15 1
2 20 0
2 10 1
1003 15 2
也就是结果中amount payflag还是pay中的值(完全照搬pay的这2个字段.行数不能多),其实就是查询结果多一个clerkcode字段。这个字段用item的代替在item表里面serialno 和 clerkcode是一一对应的。
union all
select * from pay where serialno no in (select serialno from item)
from pay left inner join item
on pay.serialno=item.serialno
insert @a(serialno,clerkcode)
select 1001,1 union
select 1001,1 union
select 1002,2 union
select 1003,1declare @pay table(serialno int,amount int,payflag int)insert @pay (serialno,amount,payflag)
select 1001,10,0 union
select 1001,15,1 union
select 1002,20,0 union
select 1002,10,1 union
select 1003,15,2 select clerkcode,amount,payflag
from @A a,@pay p
where a.serialno=p.serialno
drop table item
gocreate table item(serialno varchar(10),clerkcode varchar(10))
insert into item(serialno,clerkcode) values('1001', '1')
insert into item(serialno,clerkcode) values('1001', '1')
insert into item(serialno,clerkcode) values('1002', '2')
insert into item(serialno,clerkcode) values('1003', '1')
goif object_id('pubs..pay') is not null
drop table pay
gocreate table pay(serialno varchar(10),amount int,payflag int)
insert into pay(serialno,amount,payflag) values('1001', 10, 0)
insert into pay(serialno,amount,payflag) values('1001', 15, 1)
insert into pay(serialno,amount,payflag) values('1002', 20, 0)
insert into pay(serialno,amount,payflag) values('1002', 10, 1)
insert into pay(serialno,amount,payflag) values('1003', 15, 2)
goselect t.clerkcode as serialno,pay.amount,pay.payflag from pay,
(
select distinct * from item
)
t
where t.serialno = pay.serialnodrop table pay
drop table item/*
serialno amount payflag
---------- ----------- -----------
1 10 0
1 15 1
2 20 0
2 10 1
1 15 2(所影响的行数为 5 行)
*/