急!!怎样用select汇总到以下效果图~万分感谢@!!!!

裸奔王子 2017-11-03 03:20:50
...全文
345 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
日月路明 2017-11-03
  • 打赏
  • 举报
回复
来晚了,我一般这样写:
select 供应商,金额=sum(JFJe-DFJe)
from (select 供应商,JFJe=总金额,DFJe=退货金额 from tablea
      union all
      select 应商,JFJe=欠款金额,DFJe=0 from TableB
      )  as t
group by 供应商
裸奔王子 2017-11-03
  • 打赏
  • 举报
回复
引用 6 楼 z10843087 的回复:
你直接点结帖,然后在3楼那里给分就可以
1楼你的也行,刚才跑了一下,非常感谢@@!你也75分吧,150分就平分了~~~感谢你们@!!
RINK_1 2017-11-03
  • 打赏
  • 举报
回复
引用 4 楼 yangyihao90 的回复:
忘了,A表,B表都是SQL表,里面的 供应商,类别,总金额,退货金额,欠款金额,总欠金额 都是 字段),AB表都有数据了,想得到C表这样的效果
没理解你的意思。#1和#3不就是在数据表已有数据的基础上写的查询语句吗。但是你说A或者B表里有“总欠金额”字段,那你最终是要查询呢,还是把查询的结果来更新本身的“总欠金额”字段呢。
OwenZeng_DBA 2017-11-03
  • 打赏
  • 举报
回复
你直接点结帖,然后在3楼那里给分就可以
裸奔王子 2017-11-03
  • 打赏
  • 举报
回复
引用 3 楼 sinat_28984567 的回复:
--测试数据
if not object_id(N'Tempdb..#A') is null
	drop table #A
Go
Create table #A([供应商] nvarchar(22),[类别] nvarchar(22),[总金额] int,[退货金额] int)
Insert #A
select N'AA',N'内衣',200,0 union all
select N'AA',N'内裤',300,100 union all
select N'BB',N'袜子',500,200 union all
select N'BB',N'秋衣',600,400
GO
if not object_id(N'Tempdb..#B') is null
	drop table #B
Go
Create table #B([供应商] nvarchar(22),[欠款金额] int)
Insert #B
select N'AA',400 union all
select N'AA',100 union all
select N'BB',0 union all
select N'BB',500
Go
--测试数据结束
SELECT  t1.供应商 ,
        t1.金额 + t2.金额 AS 总欠金额
FROM    ( SELECT    供应商 ,
                    SUM(总金额 - 退货金额) AS 金额
          FROM      #A
          GROUP BY  供应商
        ) t1
        JOIN ( SELECT   供应商 ,
                        SUM(欠款金额) AS 金额
               FROM     #B
               GROUP BY 供应商
             ) t2 ON t2.供应商 = t1.供应商
3楼老大的可以用@非常感谢!~~~分数怎么给你,直接结贴就可以了吗???
裸奔王子 2017-11-03
  • 打赏
  • 举报
回复
忘了,A表,B表都是SQL表,里面的 供应商,类别,总金额,退货金额,欠款金额,总欠金额 都是 字段),AB表都有数据了,想得到C表这样的效果
二月十六 2017-11-03
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#A') is null
drop table #A
Go
Create table #A([供应商] nvarchar(22),[类别] nvarchar(22),[总金额] int,[退货金额] int)
Insert #A
select N'AA',N'内衣',200,0 union all
select N'AA',N'内裤',300,100 union all
select N'BB',N'袜子',500,200 union all
select N'BB',N'秋衣',600,400
GO
if not object_id(N'Tempdb..#B') is null
drop table #B
Go
Create table #B([供应商] nvarchar(22),[欠款金额] int)
Insert #B
select N'AA',400 union all
select N'AA',100 union all
select N'BB',0 union all
select N'BB',500
Go
--测试数据结束
SELECT t1.供应商 ,
t1.金额 + t2.金额 AS 总欠金额
FROM ( SELECT 供应商 ,
SUM(总金额 - 退货金额) AS 金额
FROM #A
GROUP BY 供应商
) t1
JOIN ( SELECT 供应商 ,
SUM(欠款金额) AS 金额
FROM #B
GROUP BY 供应商
) t2 ON t2.供应商 = t1.供应商


OwenZeng_DBA 2017-11-03
  • 打赏
  • 举报
回复
你这个问问题的方法非常好,如果能把建表的结构和表的数据的sql发上来就更好了
OwenZeng_DBA 2017-11-03
  • 打赏
  • 举报
回复
select a1.供应商, a1.总金额-a1.退货金额+b1.欠款金额  from (
select 供应商,sum(总金额) as 总金额,sum (退货金额)  as 退货金额  from a group by 供应商)  as a1  inner join 
(select 供应商,sum(欠款金额) as 欠款金额 from b group by 供应商) as b1 on a1.供应商=b1.供应商
大概这样没有验证过你可以验证下

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧