表1:
姓名 類別 數量
張三 AAAA 10
張三 8
李四 BBBB 5
張三 AAAA 5
李四 BBBB 10
表2:
張三 AAAA 25
張三 10
李四 BBBB 15
用姓名+類別作為條件,希望比較表1和表2的差額,得出表3:
張三 AAAA -5
張三 -2
李四 BBBB 10
實際用ON條件,因為表1和表2的第二行類別為NULL,所以得不出表3的第二行,實際結果是:
張三 AAAA -5
李四 BBBB 10
sql陳述句是
insert into 表3 select 表1.姓名,表1.類別,sum(表1.數量-表2.數量) as 數量 from 表1 inner join 表2 ON 表1.姓名=表2.姓名 AND 表1.類別=表2.類別
請問如果希望區分“張三 AAAA”和“張三 ”,該如何寫SQL陳述句。
感謝!
uj5u.com熱心網友回復:
if not object_id('Tempdb..#T1') is null
drop table #T1
Go
Create table #T1([姓名] nvarchar(2),[類別] nvarchar(4),[數量] int)
Insert #T1
select N'張三',N'AAAA',10 union all
select N'張三',null,8 union all
select N'李四',N'BBBB',5 union all
select N'張三',N'AAAA',5 union all
select N'李四',N'BBBB',10
Go
--> -->
if not object_id('Tempdb..#T2') is null
drop table #T2
Go
Create table #T2([姓名] nvarchar(2),[類別] nvarchar(4),[數量] int)
Insert #T2
select N'張三',N'AAAA',25 union all
select N'張三',null,10 union all
select N'李四',N'BBBB',15
Go
select
a.[姓名],a.[類別],a.[數量]-b.[數量] as [數量]
from
(Select [姓名],[類別]=isnull([類別],''),sum([數量]) as [數量] from #T1 group by [姓名],isnull([類別],'')) as a
inner join #T2 as b on a.[姓名]=b.[姓名] and a.[類別]=isnull(b.[類別],'')
/*
姓名 類別 數量
李四 BBBB 0
張三 -2
張三 AAAA -10
*/
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/84167.html
標籤:VB基礎類
