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

求个SQL 急求 非常感谢,该如何处理

2012-09-11 
求个SQL 急求 非常感谢有三张表 T1,T2,T3T1数据北京A北京B北京CT2数据北京1北京2北京3北京4T3数据北京I北

求个SQL 急求 非常感谢
有三张表 T1,T2,T3

T1数据

北京 A
北京 B
北京 C

T2数据

北京 1
北京 2
北京 3
北京 4

T3数据

北京 I
北京 J
北京 K
北京 L
北京 M

得到的结果是把三张表合成一张表

北京 I 1 A
北京 J 2 B
北京 K 3 C
北京 L 4
北京 M

这个SQL如何写?

[解决办法]

SQL code
--北京地点列是你表的第一列,数据列是你表的第二列select  coalesce(T1.北京地点列,T2.北京地点列,T3.北京地点列) 北京地点列, isnull(T3.数据列,0) [数据列T3表], isnull(T2.数据列,0) [数据列T2表], isnull(T1.数据列,0) [数据列T1表]from T1full join T2 on T1.北京地点列=T2.北京地点列full join T3 on T1.北京地点列=T3.北京地点列;
[解决办法]
SQL code
;with t1 as( select row_number() over(order by col2) rn,* from T1),t2 as( select row_number() over(order by col2) rn,* from T2),t3 as( select row_number() over(order by col2) rn,* from T3)select a.col1,a.col2,b.col2,c.col2 from T3 aleft join T2 bon a.rn=b.rnleft join T1 con a.rn=c.rn
[解决办法]
SQL code
CREATE TABLE TABLE1(City NVARCHAR(20),ID NVARCHAR(10))INSERT INTO TABLE1SELECT  '北京','A'UNION ALL SELECT  '北京','B'UNION ALL SELECT  '北京','C'CREATE TABLE TABLE2(City NVARCHAR(20),ID NVARCHAR(10))INSERT INTO TABLE2SELECT  '北京','1'UNION ALL SELECT  '北京','2'UNION ALL SELECT  '北京','3'UNION ALL SELECT  '北京','4'CREATE TABLE TABLE3(City NVARCHAR(20),ID NVARCHAR(10))INSERT INTO TABLE3SELECT  '北京','I'UNION ALL SELECT  '北京','J'UNION ALL SELECT  '北京','K'UNION ALL SELECT  '北京','L'UNION ALL SELECT  '北京','M'SELECT T0.City,T0.ID,T1.ID,T2.IDFROMmaster.dbo.spt_values A1LEFT JOIN (    SELECT ROW_NUMBER() OVER (ORDER BY ID) LineNum,City,ID    FROM TABLE3) T0 ON A1.Number =T0.LineNumLEFT JOIN (SELECT ROW_NUMBER() OVER (ORDER BY ID) LineNum,City,IDFROM TABLE2) T1 ON T0.LineNum = T1.LineNumLEFT JOIN (SELECT ROW_NUMBER() OVER (ORDER BY ID) LineNum,City,IDFROM TABLE1) T2 ON T0.LineNum = T2.LineNumWHERE A1.Type='P' AND (T0.City IS NOT NULL OR T1.City IS NOT NULL OR T2.City is not null)/*City                 ID         ID         ID-------------------- ---------- ---------- ----------北京                   I          1          A北京                   J          2          B北京                   K          3          C北京                   L          4          NULL北京                   M          NULL       NULL(5 行受影响)*/
[解决办法]
SQL code
--> 测试数据: @T1declare @T1 table (name varchar(4),value varchar(1))insert into @T1select '北京','A' union allselect '北京','B' union allselect '北京','C'--> 测试数据: @T2declare @T2 table (name varchar(4),value int)insert into @T2select '北京',1 union allselect '北京',2 union allselect '北京',3 union allselect '北京',4--> 测试数据: @T3declare @T3 table (name varchar(4),value varchar(1))insert into @T3select '北京','I' union allselect '北京','J' union allselect '北京','K' union allselect '北京','L' union allselect '北京','M';with m1 as(select row_number() over (order by getdate()) as id,* from @T1),m2 as(select row_number() over (order by getdate()) as id,* from @T2),m3 as(select row_number() over (order by getdate()) as id,* from @T3)select c.name,c.value as c1,b.value as c2,a.value as c3from m3 c left join m2 b on c.id=b.idleft join m1 a on a.id=c.id/*name c1   c2          c3---- ---- ----------- ----北京   I    1           A北京   J    2           B北京   K    3           C北京   L    4           NULL北京   M    NULL        NULL*/
[解决办法]
SQL code
--> 测试数据: @T1declare @T1 table (name varchar(4),value varchar(1))insert into @T1select '北京','A' union allselect '北京','B' union allselect '北京','C'--> 测试数据: @T2declare @T2 table (name varchar(4),value int)insert into @T2select '北京',1 union allselect '北京',2 union allselect '北京',3 union allselect '北京',4--> 测试数据: @T3declare @T3 table (name varchar(4),value varchar(1))insert into @T3select '北京','I' union allselect '北京','J' union allselect '北京','K' union allselect '北京','L' union allselect '北京','M'-->开始查询;with m1 as(select rn=row_number() over (order by getdate()),* from @T1),m2 as(select rn=row_number() over (order by getdate()),* from @T2),m3 as(select rn=row_number() over (order by getdate()),* from @T3)select c.name,c.value as c1,b.value as c2,a.value as c3from m3 c left join m2 b on c.rn=b.rnleft join m1 a on a.rn=c.rn-->结果集/*name c1   c2          c3---- ---- ----------- ----北京   I    1           A北京   J    2           B北京   K    3           C北京   L    4           NULL北京   M    NULL        NULL*/ 

热点排行