表a
品名 进货数量 进货价值 进货人
电视机 4 8000 小张
电话 10 5000 小刘
电视机 5 10000 小王
表b
品名 出货数量 出货价值 出货人
电视机 2 9000 小胡
VCD 5 2500 大李
VCD 1 500 老刘
查询得到
品名 进货数量 进货价值 出货数量 出货价值 进货次数 出货次数
电视机 9 18000 2 9000 2 1
电话 10 5000 0 0 1 0
VCD 0 0 6 3000 0 2
if
not
object_id(N
'Tempdb..#a'
)
is
null
drop
table
#a
Go
Create
table
#a([品名] nvarchar(23),[进货数量]
int
,[进货价值]
int
,[进货人] nvarchar(22))
Insert
#a
select
N
'电视机'
,4,8000,N
'小张'
union
all
select
N
'电话'
,10,5000,N
'小刘'
union
all
select
N
'电视机'
,5,10000,N
'小王'
GO
if
not
object_id(N
'Tempdb..#b'
)
is
null
drop
table
#b
Go
Create
table
#b([品名] nvarchar(23),[出货数量]
int
,[出货价值]
int
,[出货人] nvarchar(22))
Insert
#b
select
N
'电视机'
,2,9000,N
'小胡'
union
all
select
N
'VCD'
,5,2500,N
'大李'
union
all
select
N
'VCD'
,1,500,N
'老刘'
Go
--测试数据结束
SELECT
CASE
WHEN
t1.品名
IS
NULL
THEN
t2.品名
ELSE
t1.品名
END
AS
品名 ,
ISNULL
(进货数量,0) 进货数量 ,
ISNULL
(进货价值,0) 进货价值,
ISNULL
(出货数量,0) 出货数量,
ISNULL
(出货价值,0) 出货价值,
ISNULL
(进货次数,0) 进货次数,
ISNULL
(出货次数,0) 出货次数
FROM
(
SELECT
品名 ,
SUM
(进货数量)
AS
进货数量 ,
SUM
(进货价值)
AS
进货价值 ,
COUNT
(1)
AS
进货次数
FROM
#a
GROUP
BY
品名
) t1
FULL
JOIN
(
SELECT
品名 ,
SUM
(出货数量)
AS
出货数量 ,
SUM
(出货价值)
AS
出货价值 ,
COUNT
(1)
AS
出货次数
FROM
#b
GROUP
BY
品名
) t2
ON
t2.品名 = t1.品名