有关如何使用T-SQL查询完成此操作的任何想法?
我有两个表,表A 包含我想要返回但过滤的记录。 表B 包含过滤器和类类别列表。新记录一直添加到表A中。目标是根据表B 中列出的过滤器,在表A 中对记录进行动态分类。
示例:
表A
Name
------------
John Doe
Mary Lamb
Peter Pan
Tom Sawyer
Suzie Lamb
Nancy Lamb
Josh Reddin
表B :
Filter | Category
----------------------
John%Doe% | Team 1
%Lamb% | Team 2
Tom% | Team 1
期望的输出:
Name | Category
John Doe | Team 1
Tom Sawyer | Team 1
Mary Lamb | Team 2
Suzie Lamb | Team 2
Nancy Lamb | Team 2
Peter Pan |
Josh Reddin |
我考虑过做以下事情,但不确定这是否是最佳解决方案:
SELECT Filter, category from TableB
(获取过滤器列表)使用SQL循环通过(1.)中返回的过滤器,并使用LIKE
在表A中查找匹配项。
示例:
SELECT name, Category
FROM Table A, Table B
WHERE Table A.Name Like (CURRENT filter FROM B)
将(2.)中返回的记录插入/附加到TempTable
SELECT *
FROM TempTable (this returns Names and categories as shown in the desired output)
UNION
SELECT *
FROM Table A
RIGHT OUTER JOIN TempTable on NAME
WHERE Category in null
(这会返回没有找到类别的行...... Peter Pan和Josh Reddin)
有什么想法吗?
表现如何?
感谢。
答案 0 :(得分:1)
您可以使用like
和left join
select a.Name,b.Category
from tableA a left join tableB b on a.name like b.Filter