【发布时间】:2015-01-30 07:19:47
【问题描述】:
我有如下数据:
id docid fname lname
1 1 x y
2 1 x y
3 1 x y
我需要具有匹配行的相同文档 ID 的结果 docid 1 的条件同时我想将 id 3 与 id 2 和 1 进行比较并仅获取匹配的记录,但不适用于 id 3。类似的东西:
id docid fname lname
1 1 x y
2 1 x y
对我来说好消息是仅与单个 documentid 进行比较,例如 1。另外,我有比较记录。说 id:3,它必须与其他两条记录进行比较。
下面有两种情况,考虑比较id为6:
id docid fname lname
4 2 p q
5 2 r s
6 2 p q
id docid fname lname
4 2 p q
如果没有记录匹配,则结果为空。
我尝试了以下方法:
SELECT ta.id,ta.docid,ta.fname,ta.lname FROM tbldoc ta
WHERE (SELECT COUNT(*)FROM tbldoc ta2
WHERE ISNULL(ta.id,'') = ISNULL(ta2.id,'') AND
ISNULL(ta.docid,'') = ISNULL(ta2.docid,'') AND
ISNULL(ta.fname,'') = ISNULL(ta2.fname ,'') AND
ISNULL(ta.lname,'') = ISNULL(ta2.lname ,'')
)>1 AND docid=1 And id<>3
但是,当所有列都有空值时,它会失败。
更新:上面是示例 这是我的真实场景表架构和数据
create table tbldoc (Created int,Checkn nvarchar(max),Account nvarchar(max),EONumber nvarchar(max),Voucher nvarchar(max),Invoice nvarchar(max),Total decimal,Venue nvarchar(max),Reference nvarchar(max),Sign bit,Room nvarchar(max),Page int);
insert into tbldoc values(59,1234,NULL,NULL,NULL,NULL,40,3,NULL,1,NULL,NULL);
insert into tbldoc values(62,1234,NULL,NULL,NULL,NULL,40,3,NULL,1,NULL,NULL);
insert into tbldoc values(68,1234,NULL,NULL,NULL,NULL,40,3,NULL,1,NULL,NULL);
【问题讨论】:
-
你尝试过什么吗?请发布您的代码。
-
编辑您的问题并将您的代码添加到您的问题中。
标签: sql sql-server sql-server-2008