日期:2014-05-19  浏览次数:20464 次

一个SQL查询问题,有SQL大虾帮我解决一下,不盛感谢!!
Field1     Field2     Field3
M1                 AB             BA
M1                 BA             AB
M2                 CD             DC
M2                 DC             CD
如何通过SQL语句查询成以下结构:
Field1     Field2     Field3
M1                 AB             AB
M1                 BA             AB
M2                 CD             CD
M2                 DC             CD
或者这样的结果也可以
Field1     Field2     Field3
M1                 AB             BA
M1                 BA             BA
M2                 CD             DC
M2                 DC             DC

------解决方案--------------------
select m.* , n.field3 from
(
select Field1,Field2 from tb
) m
left join
(
select field1,min(field2) field3 from tb group by field1
) n
on m.field1 = n.field1

------解决方案--------------------
if object_id( 'pubs..tb ') is not null
drop table tb
go

create table tb(Field1 varchar(10),Field2 varchar(10),Field3 varchar(10))
insert into tb(Field1,Field2,Field3) values( 'M1 ', 'AB ', 'BA ')
insert into tb(Field1,Field2,Field3) values( 'M1 ', 'BA ', 'AB ')
insert into tb(Field1,Field2,Field3) values( 'M2 ', 'CD ', 'DC ')
insert into tb(Field1,Field2,Field3) values( 'M2 ', 'DC ', 'CD ')

select m.* , n.field3 from
(
select Field1,Field2 from tb
) m
left join
(
select field1,min(field2) field3 from tb group by field1
) n
on m.field1 = n.field1

drop table tb

/*
Field1 Field2 field3
---------- ---------- ----------
M1 AB AB
M1 BA AB
M2 CD CD
M2 DC CD

(所影响的行数为 4 行)


*/
------解决方案--------------------
--换MAX就是你后面的要求.

if object_id( 'pubs..tb ') is not null
drop table tb
go

create table tb(Field1 varchar(10),Field2 varchar(10),Field3 varchar(10))
insert into tb(Field1,Field2,Field3) values( 'M1 ', 'AB ', 'BA ')
insert into tb(Field1,Field2,Field3) values( 'M1 ', 'BA ', 'AB ')
insert into tb(Field1,Field2,Field3) values( 'M2 ', 'CD ', 'DC ')
insert into tb(Field1,Field2,Field3) values( 'M2 ', 'DC ', 'CD