楼上的朋友的句子存在子查询返回值限制的问题,而我的句子就不会有这个问题,比如张三的Homeno如果有2个不同的号码的话,就会返回2条记录。
假设原表名为test
select distinct set1.name,set2.phoneno,set3.homeno,set4.officeno
from
(select name from test where name='张三') as set1,
(select phoneno from test where name='张三' and phoneno>1) as set2,
(select homeno from test where name='张三' and homeno>1) as set3,
(select officeno from test where name='张三' and officeno>1) as set4
我已经测试过了,绝对可行,不信你们可以自己试试,要查询其他人的话只需要指定名字就行了。
CREATE TABLE [test] (
[Name] [char] (16) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[PhoneNo] [int] NULL ,
[HomeNo] [int] NULL ,
[OfficeNo] [int] NULL
) ON [PRIMARY]
GO
INSERT INTO [test]([Name], [PhoneNo], [HomeNo], [OfficeNo])
VALUES('张三',11,null,null)
INSERT INTO [test]([Name], [PhoneNo], [HomeNo], [OfficeNo])
VALUES('张三',null,22,null)
INSERT INTO [test]([Name], [PhoneNo], [HomeNo], [OfficeNo])
VALUES('张三',null,null,33)
INSERT INTO [test]([Name], [PhoneNo], [HomeNo], [OfficeNo])
VALUES('张三',null,null,44)
go