首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

合并子表的有关问题——

2012-05-21 
合并子表的问题——在线等。大家好,我今天遇到一个难题:三张表,TABLE1、TABLE2和TABLE3,关系是TABLE1是2和3的

合并子表的问题——在线等。
大家好,我今天遇到一个难题:

三张表,TABLE1、TABLE2和TABLE3,关系是TABLE1是2和3的父表,关联字段1表为GUID,2和3为PERSONID,2表和3表里的记录会出现多条。现在需要生成一个合并表,如下:


TABLE1
GUIDNAME
100张三
101李四
102王五

TABLE2
PERSONIDCASEA
100北京
100天津
101湖南
101海南
102上海
102云南

TABLE3
PERSONIDCASEB
100500
101600
101700
102800
102900
1021000

结果表一:
GUIDNAMECASEACASEB
100张三北京500
100张三天津
101李四湖南600
101李四海南700
102王五上海800
102王五云南900
102王五1000

结果表二:
GUIDNAMENEWIDCASEA
100张三1北京
100张三2天津
101李四1湖南
101李四2海南
102王五1上海
102王五2云南

大约就是一对二个多的关系,生成的结果表按记录多的子表来,少的顺序排在上面。跪求高手帮助!

[解决办法]

SQL code
--结果表二select a.*,row_number() over(partition by b.CASEA order by b.CASEA) NEWID,IsNull(b. CASEA,'') CASEAfrom TABLE1 a join TABLE2 b on a.GUID=b.PERSONIDorder by a.GUID
[解决办法]
探讨
SQL code


---结果表一
select a.*,IsNull(b. CASEA,'') CASEA,IsNull(c.CASEB ,'')CASEB
from TABLE1 a
join TABLE1 b on a.GUID=b.PERSONID
join TABLE3 c on a.GUID=c.PERSONID
order by a.GUID

[解决办法]
SQL code
--结果表1SELECT a.*,IsNull(b.CASEA,'') CASEA,IsNull(c.CASEB ,'')CASEB FROM TABLE1 a LEFT JOIN TABLE2 b ON a.GUID=b.PERSONID LEFT JOIN TABLE3 c ON a.GUID=c.PERSONID ORDER BY a.GUID--结果表2SELECT a.*,row_number() over (partition by A.GUID,A.NAME,B.CASEA order by A.GUID) as NEWID,IsNull(b.CASEA,'') AS CASEA,FROM TABLE1 a LEFT JOIN TABLE2 b ON a.GUID=b.PERSONID ORDER BY a.GUID 

热点排行