select 品名, 种类 ,单位 sum(a.数量)-(select Sum(b.数量) from b where b.品名=a.品名 group by b.品名 ) from a group by a.品名
select 品名,种类,单位,sum(数量) as 数量 from( select * from a union all select 品名, 种类, 单位 , -数量 from b ) group by 品名,种类,单位
select 品名, 种类 ,单位 sum(a.数量)-(select Sum(b.数量) from b where b.品名=a.品名 group by b.品名 ) from a group by a.品名 union select 品名, 种类 ,单位 sum(a.数量) from a where a.品名 not in (select 品名 from b)
if OBJECT_ID('tempdb..#TEMP1') is not null DROP TABLE #TEMP1 if OBJECT_ID('tempdb..#TEMP2') is not null DROP TABLE #TEMP2 CREATE TABLE #TEMP1 (品名 nvarchar(20),种类 nvarchar(20),单位 nvarchar(2), 数量 int) INSERT #TEMP1 VALUES('大豆','食品','斤',20) INSERT #TEMP1 VALUES('黄瓜','食品','斤',30) INSERT #TEMP1 VALUES('大豆','食品','斤',15) SELECT * FROM #TEMP1 CREATE TABLE #TEMP2 (品名 nvarchar(20),种类 nvarchar(20),单位 nvarchar(2), 数量 int) INSERT #TEMP2 VALUES('大豆','食品','斤',8) INSERT #TEMP2 VALUES('大豆','食品','斤',2) SELECT * FROM #TEMP2select 品名,种类,单位,sum(数量) as 数量 from ( select * from #TEMP1 union select 品名,种类,单位,-数量 as 数量 from #TEMP2) c group by 品名,种类,单位
SELECT 品名, 种类, 单位, (SUM(ruku.数量) - (SELECT SUM(chuku.数量) FROM chuku GROUP BY chuku.品名)) AS 数量 FROM ruku GROUP BY 品名, 种类, 单位 ******* 按蓝天白云的思路改成这样,虽然报错但可以运行了。 待我再试试看任水寒的代码,还有就是怎样生成一个新表呢?
SELECT a.品名,a.种类,a.单位,a.s-b.s AS 数量 FROM (SELECT 品名,种类,单位,SUM(数量) AS s FROM A表 GROUP BY 品名,种类,单位) AS a, (SELECT 品名,种类,单位,SUM(数量) AS s FROM B表 GROUP BY 品名,种类,单位) AS b, WHERE a.品名=b.品名
select 品名,种类,单位,sum(数量) as 数量 #tmpA from a group by 品名,种类,单位select 品名,种类,单位,sum(数量) as 数量 #tmpB from B group by a.品名,a.种类,a.单位,isnull(A.数量,0)-isnull(B.数量,0) select 品名,种类,单位, from #tmpA A RIGHT OUTER JOIN #tmpB B on a.品名=b.品名 drop table #TmpA drop table #tmpB
select a.品名,a.种类,a.单位,sum(a.数量) - sum(b.数量) from a,b where a.品名 = b.品名 group by a.品名,a.种类,a.单位,b.品名
from(
select * from a
union all
select 品名, 种类, 单位 , -数量 from b
)
group by 品名,种类,单位
union
select 品名, 种类 ,单位 sum(a.数量) from a where a.品名 not in
(select 品名 from b)
DROP TABLE #TEMP1
if OBJECT_ID('tempdb..#TEMP2') is not null
DROP TABLE #TEMP2
CREATE TABLE #TEMP1 (品名 nvarchar(20),种类 nvarchar(20),单位 nvarchar(2), 数量 int)
INSERT #TEMP1 VALUES('大豆','食品','斤',20)
INSERT #TEMP1 VALUES('黄瓜','食品','斤',30)
INSERT #TEMP1 VALUES('大豆','食品','斤',15)
SELECT * FROM #TEMP1
CREATE TABLE #TEMP2 (品名 nvarchar(20),种类 nvarchar(20),单位 nvarchar(2), 数量 int)
INSERT #TEMP2 VALUES('大豆','食品','斤',8)
INSERT #TEMP2 VALUES('大豆','食品','斤',2)
SELECT * FROM #TEMP2select 品名,种类,单位,sum(数量) as 数量 from ( select * from #TEMP1 union select 品名,种类,单位,-数量 as 数量 from #TEMP2) c group by 品名,种类,单位
品名,
种类,
单位,
(SUM(ruku.数量) - (SELECT SUM(chuku.数量)
FROM
chuku GROUP BY chuku.品名)) AS 数量 FROM ruku GROUP BY 品名,
种类,
单位
*******
按蓝天白云的思路改成这样,虽然报错但可以运行了。
待我再试试看任水寒的代码,还有就是怎样生成一个新表呢?
FROM (SELECT 品名,种类,单位,SUM(数量) AS s FROM A表 GROUP BY 品名,种类,单位) AS a,
(SELECT 品名,种类,单位,SUM(数量) AS s FROM B表 GROUP BY 品名,种类,单位) AS b,
WHERE a.品名=b.品名
#tmpA
from a
group by 品名,种类,单位select 品名,种类,单位,sum(数量) as 数量
#tmpB
from B
group by a.品名,a.种类,a.单位,isnull(A.数量,0)-isnull(B.数量,0)
select 品名,种类,单位,
from #tmpA A
RIGHT OUTER JOIN #tmpB B on a.品名=b.品名 drop table #TmpA
drop table #tmpB
from a,b
where a.品名 = b.品名
group by a.品名,a.种类,a.单位,b.品名