我有以下标签(粗体是PK,斜体是FK)
发明家( inventorid ,inventorfirst,inventorlast, patentno )
受让人( assigneeID ,AssigneeName,AssigneeCity,AssigneeState patentno )
InventorID和受让人ID只是用于索引目的的自编号身份,否则无意义。
我想要找到的是具有相同名字和姓名,但至少有2名不同受让人的情况
到目前为止我所拥有的(我知道这是非常小的)
SELECT a.assigneename, i.inventorfirst+' '+ i.inventorlast as Name
FROM inventors i, assignees a
WHERE i.patentno=a.patentno
答案 0 :(得分:0)
在这里,我使用左外连接为不同的受让人
如果发明人没有任何受让人,则'isnull'功能会显示空白值
请使用下面的sql查询:
SELECT
isnull(a.assigneename,'') as assigneename
, i.inventorfirst+' '+ i.inventorlast as Name
FROM
inventors i
left outer join assignees a on
i.patentno=a.patentno
答案 1 :(得分:0)
如果您只想要一个对其发明有一个以上assigneeName的inventorFirst列表,请尝试以下方法:
;with inventor_cte(inventorfirst,cnt)
as
(
SELECT
i.inventorfirst
, count(distinct a.assigneename) cnt
FROM
inventors i
inner join assignees a ON
i.patentno=a.patentno
GROUP BY i.inventorfirst
)
select inventorfirst from inventor_cte where cnt>1
上述替代方法是使用HAVING
子句:
SELECT i.inventorfirst
FROM
inventors i
inner join assignees a ON
i.patentno=a.patentno
GROUP BY i.inventorfirst
HAVING count(distinct a.assigneename) > 1
我更喜欢第一种语法 - 不确定哪种更有效。