颢想科技网
您的当前位置:首页sql多表联合查询

sql多表联合查询

来源:颢想科技网



下面来看看实例

三个表

收费表

id flowid totall
1 k1 3000

详细表
id flowid pid num
1 k1 1 2000
2 k1 2 1000

付款方式表
id pname
1 现金
2 支票
3 刷卡

create table pay(id int,flowid varchar(10),totall int)
insert into pay select 1,'k1',3000

create table detail(id int,flowid varchar(10),pid int,num int)
insert into detail select 1,'k1',1,2000
insert into detail select 2,'k1',2,1000

create table mode(id int,pname varchar(10))
insert into mode select 1,'现金'
insert into mode select 2,'支票'
insert into mode select 3,'刷卡'

declare @sql varchar(8000)
set @sql=''

select @sql=@sql+',['+pname+']=sum(case b.pid when '+rtrim(id)+' then num else 0 end)'
from mode

set @sql='select a.id,a.flowid,a.totall'+@sql+' from pay a,detail b where a.flowid=b.flowid group by a.id,a.flowid,a.totall'
exec(@sql)


结果:

id flowid totall 现金 支票 刷卡
1 k1 3000 2000 1000 0

显示全文