SQL - 如何返回某些行与给定列表匹配的整个行集
Posted
技术标签:
【中文标题】SQL - 如何返回某些行与给定列表匹配的整个行集【英文标题】:SQL - How to return entire row sets where some rows match a given list 【发布时间】:2016-06-22 13:23:31 【问题描述】:假设有一张医疗记录表。每次访问都有一个唯一的 ID,但由几行组成,对应于为访问提供的各种代码/服务。 例如,对于每个唯一的过程代码“123”、“456”和“789”,可能有 3 行的 claimID 为“John”; “简”的 15 行代码; “大卫”的 6 行...
ID Code
John 123
John 456
John 789
Jane 123
Jane 456
Jane 789
Jane 321
Jane 654
David 123
David 456
David 789
David 987
我有一个包含 50 个唯一程序代码的列表,并且想要返回整个 set 声明行(即“John”的 所有 行),其中这些代码的任意组合50 个代码已与另一个代码一起计费,但不是与它们自己计费(“123”与“321”,但不是“123”与“123”)。如果“123”在我的 50 个列表中,但“456”和“789”不在,它应该不返回一组“John”声明,因为我的 50 个代码中只有一个存在。我希望这是有道理的。
Positive Result Codes
123
321
987
查询应返回所有 5 个 Jane 行(123 和 321)和所有 4 个 David 行(123 和 987)。
ID Code
Jane 123
Jane 456
Jane 789
Jane 321
Jane 654
David 123
David 456
David 789
David 987
【问题讨论】:
请以表格形式添加示例数据和预期输出。 对不起,我是全新的。我没有看到任何表格降价。 这是一篇很棒的文章,解释了如何发布此类内容。 spaghettidba.com/2015/04/24/… 使用 4 个空格使一行具有代码样式。或者标记这些行并单击问题编辑器中的代码按钮。例如看这篇文章:***.com/q/8495886/575376 【参考方案1】:试试这个代码:
;WITH Visits as (
SELECT claimID,COUNT(DISTINCT Code) as CNT FROM tbl_Visits
WHERE Code in (123,123,321,987)
GROUP by claimID
HAVING COUNT(DISTINCT Code) > 1
)
SELECT * FROM tbl_Visits
WHERE claimID in (SELECT claimID FROM Visits);
【讨论】:
以上是关于SQL - 如何返回某些行与给定列表匹配的整个行集的主要内容,如果未能解决你的问题,请参考以下文章