合并子表的问题——在线等。
大家好,我今天遇到一个难题:
三张表,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云南
大约就是一对二个多的关系,生成的结果表按记录多的子表来,少的顺序排在上面。跪求高手帮助!
[解决办法]
--结果表二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
[解决办法]
--结果表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