求一左右相连的SQL?

long7411 2012-11-09 03:41:20
表1:

站号 TQX Y1
59758 ef 6
59758 eq 3
59758 wf 4


站号 TQX Y2
59758 ef 3
59748 g1 5
59758 wq 7

如何得到下表:


站号 TQX Y1 Y2
59758 ef 6 3
59758 eq 3 NULL
59758 wf 4 NULL
59758 g1 NULL 5
59758 wq NULL 7
...全文
105 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoqi7456 2012-11-12
  • 打赏
  • 举报
回复
CREATE TABLE tb (zh varchar(20),tqx varchar(20),y1 varchar(20))
INSERT into tb 
SELECT '59758','ef','6' UNION ALL
SELECT '59758','eq','3' UNION ALL
SELECT '59758','wf','5'

IF object_id('tb2') IS NOT NULL
DROP TABLE tb2
CREATE TABLE tb2 (zh varchar(20),tqx varchar(20),y2 varchar(20))
INSERT INTO tb2
SELECT '59758','ef','3' UNION ALL
SELECT '59748','g1','5' UNION ALL
SELECT '59758','wq','7'

SELECT isnull(a.zh,b.zh),isnull(a.tqx,b.tqx),a.y1,b.y2 FROM tb a FULL JOIN tb2 b on a.zh=b.zh
and a.tqx=b.tqx
發糞塗牆 2012-11-09
  • 打赏
  • 举报
回复
你自己order by一下吧。
發糞塗牆 2012-11-09
  • 打赏
  • 举报
回复
/*CREATE TABLE t1(站号 VARCHAR(10)   ,TQX  varchar(10)  ,Y1 int )
INSERT INTO t1
SELECT '59758','ef',    6
UNION ALL 
SELECT '59758',   'eq',   3
UNION ALL 
SELECT '59758',   'wf',    4

CREATE TABLE t2(站号 VARCHAR(10)   ,TQX  varchar(10)  ,Y2 int )
INSERT INTO t2
SELECT '59758',   'ef',     3
UNION ALL 
SELECT '59758',   'g1' ,    5
UNION ALL 
SELECT '59758',   'wq',     7
*/
SELECT 站号,TQX,SUM(y1) y1, SUM(y2)y2
FROM (
SELECT 站号,TQX,y1,NULL y2
FROM t1 
UNION  
SELECT 站号,TQX,NULL y1, y2
FROM t2 )a
GROUP BY 站号,TQX

/*
站号         TQX        y1          y2
---------- ---------- ----------- -----------
59758      ef         6           3
59758      eq         3           NULL
59758      g1         NULL        5
59758      wf         4           NULL
59758      wq         NULL        7
警告: 聚合或其他 SET 操作消除了 Null 值。
*/
开启时代 2012-11-09
  • 打赏
  • 举报
回复
引用 3 楼 long7411 的回复:
两个表中各多有记录都显示,不符合连接条件的记录显示null,楼上两位的方法都不能实现
不符合条件的加where 筛掉啊
long7411 2012-11-09
  • 打赏
  • 举报
回复
两个表中各多有记录都显示,不符合连接条件的记录显示null,楼上两位的方法都不能实现
着魔 2012-11-09
  • 打赏
  • 举报
回复

select tq1.站好 ,tq1.TQX,tq1.Y1,tq2.Y2
from 表1 as tq1,表2 as tq2
where tq1.站好 = tq2.站好
试一试 大概是这样子 我现在没有环境
开启时代 2012-11-09
  • 打赏
  • 举报
回复
select ISNULL(a.站号,b.站号) as 站号,ISNULL(a.tqx,b.tqx) as tqx,y1,y2 from tb1 as a full join tb2 as b on a.站号=b.站号 and a.tqx=b.tqx

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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