關於sql 多表聯集查詢方法很多,我們今天就來講一下關于sql多表查詢的用法與實例代碼,一般會用到select * from (select ) union 來操作。
select 類型,sum(合計金額) from
(select 商品名稱,數量,日期,類型,合計金額 from 出庫表
where 日期 > '2010-5-5 00:00:00'
union
select 商品名稱,數量,日期,類型,合計金額 from 入庫表
where 日期 > '2010-5-5 00:00:00'
union
select 商品名稱,數量,日期,類型,合計金額 from 銷售表
where 日期 > '2010-5-5 00:00:00')
group by 類型
下面來看看實例
三個表
收費表
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.tota ll'
exec(@sql)
結果:
id flowid totall 現金 支票 刷卡
1 k1 3000 2000 1000 0