关于sqlserver数据库表连接问题,急需!!!!!!!

碎梦灬 2018-12-07 09:37:44
已知有表A,所在位置为A服务器A数据库



表b,所在位置为A服务器A数据库+B数据库联表查询



注:deposit只是别名哦!他是两个不同字段,分为线下充值和线上充值,请问如何得到以下结果

...全文
363 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dear SQL(燊) 2018-12-11
  • 打赏
  • 举报
回复
select [地区],[编号],gas_station_name
	,[线下充值]=sum([线下充值])
	,[线上充值]=sum([线上充值])
from (
	select a.area_code as [地区]
		,a.gas_station_code as [编号]
		,a.gas_station_name 
		,[线下充值]=0
		,b.deposit as [线上充值]
	from A 
	UNION ALL
	select a.area_code as [地区]
		,a.gas_station_code as [编号]
		,a.gas_station_name 
		,a.deposit as [线下充值]
		,[线上充值]=0
	from b
)a
group by [地区],[编号],gas_station_name
二月十六 2018-12-10
  • 打赏
  • 举报
回复
引用 5 楼 碎梦灬 的回复:
[quote=引用 1 楼 二月十六 的回复:] 表b实际联合查询代码换一下
SELECT t.deposit AS 线下充值,A.deposit AS 线上充值 FROM A.dbo.A JOIN (关联查询的表B) t ON A.gas_station_code = t.gasstation_code
问题在于A表的gas_station_code 和B表的gas_station_code 有不同值,联表要考虑线上有充值但线下有可能没充值的的情况,或相反 (线上线下同时有充值gas_station_code才想同,如果一种有一种没有gas_station_code是不同的)[/quote] 用full join试试
碎梦灬 2018-12-10
  • 打赏
  • 举报
回复
引用 1 楼 二月十六 的回复:
表b实际联合查询代码换一下
SELECT t.deposit AS 线下充值,A.deposit AS 线上充值 FROM A.dbo.A JOIN (关联查询的表B) t ON A.gas_station_code = t.gasstation_code
问题在于A表的gas_station_code 和B表的gas_station_code 有不同值,联表要考虑线上有充值但线下有可能没充值的的情况,或相反 (线上线下同时有充值gas_station_code才想同,如果一种有一种没有gas_station_code是不同的)
吉普赛的歌 2018-12-07
  • 打赏
  • 举报
回复
select a.area_code as [地区]
,a.gas_station_code as [编号]
,a.gas_station_name 
,a.deposit as [线下充值]
,b.deposit as [线上充值]
from A inner join B 
    on a.area_code=b.area_code 
        and a.gasstation_code=b.gasstation_code
二月十六 2018-12-07
  • 打赏
  • 举报
回复
表b实际联合查询代码换一下
SELECT t.deposit AS 线下充值,A.deposit AS 线上充值 FROM A.dbo.A JOIN (关联查询的表B) t ON A.gas_station_code = t.gasstation_code
二月十六 2018-12-07
  • 打赏
  • 举报
回复
引用 3 楼 碎梦灬 的回复:
[quote=引用 1 楼 二月十六 的回复:] 表b实际联合查询代码换一下
SELECT t.deposit AS 线下充值,A.deposit AS 线上充值 FROM A.dbo.A JOIN (关联查询的表B) t ON A.gas_station_code = t.gasstation_code
哪有这么简单,表A和表B已经是联表查询的结果,是要把两个已经查询出来的结果再联表,并且b表是跨数据库联表的 [/quote] 问题在哪?表A 表B已经查询出来了,当做表来直接关联查询就行了。跨数据问题?不是在一台服务器上么,直接前边带库名就行了
碎梦灬 2018-12-07
  • 打赏
  • 举报
回复
引用 1 楼 二月十六 的回复:
表b实际联合查询代码换一下
SELECT t.deposit AS 线下充值,A.deposit AS 线上充值 FROM A.dbo.A JOIN (关联查询的表B) t ON A.gas_station_code = t.gasstation_code
哪有这么简单,表A和表B已经是联表查询的结果,是要把两个已经查询出来的结果再联表,并且b表是跨数据库联表的

22,300

社区成员

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

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