Как выбрать набор результатов с учетом нескольких searchTerms для каждого столбца в TSQL - PullRequest
0 голосов
/ 07 мая 2020

Итак, у меня есть несколько таблиц

CREATE TABLE [dbo].[Person](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [FirstName] [nvarchar](max) NULL,
    [LastName] [nvarchar](max) NULL,
    [ManagerId] [int] NULL,
    [Active] [nchar](10) NULL
)

CREATE TABLE [dbo].[LOB](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](max) NULL
)

CREATE TABLE [dbo].[PersonLOB](
    [PersonId] [int] NULL,
    [LOBId] [int] NULL
)

INSERT [dbo].[LOB] ([Name]) VALUES (N'Banking')
INSERT [dbo].[LOB] ([Name]) VALUES (N'Insurance')
INSERT [dbo].[LOB] ([Name]) VALUES (N'Real Estate')
INSERT [dbo].[LOB] ([Name]) VALUES (N'Retail Brokerage')
INSERT [dbo].[LOB] ([Name]) VALUES (N'Merger & Acquisition')


INSERT [dbo].[Person] ([FirstName], [LastName], [ManagerId], [Active]) VALUES ( N'Alfredo', N'Mando', NULL, 1)
INSERT [dbo].[Person] ([FirstName], [LastName], [ManagerId], [Active]) VALUES ( N'Alejandro', N'Mendoza', NULL, 1)
INSERT [dbo].[Person] ([FirstName], [LastName], [ManagerId], [Active]) VALUES ( N'Berto', N'Lao', 2, 1)
INSERT [dbo].[Person] ([FirstName], [LastName], [ManagerId], [Active]) VALUES ( N'Benjamin', N'Mindu', 2, 1)
INSERT [dbo].[Person] ([FirstName], [LastName], [ManagerId], [Active]) VALUES ( N'Ben', N'Uy', NULL, 1)
INSERT [dbo].[Person] ([FirstName], [LastName], [ManagerId], [Active]) VALUES ( N'Bernie', N'Sanders', NULL, 1)
INSERT [dbo].[Person] ([FirstName], [LastName], [ManagerId], [Active]) VALUES ( N'Benjamin', N'Santos', 3, 1)
INSERT [dbo].[Person] ([FirstName], [LastName], [ManagerId], [Active]) VALUES ( N'Cathy', N'Zaragosa', 2, 1)

INSERT [dbo].[PersonLOB] ([PersonId], [LOBId]) VALUES (1, 1)
INSERT [dbo].[PersonLOB] ([PersonId], [LOBId]) VALUES (2, 1)
INSERT [dbo].[PersonLOB] ([PersonId], [LOBId]) VALUES (2, 2)
INSERT [dbo].[PersonLOB] ([PersonId], [LOBId]) VALUES (2, 3)
INSERT [dbo].[PersonLOB] ([PersonId], [LOBId]) VALUES (3, 2)
INSERT [dbo].[PersonLOB] ([PersonId], [LOBId]) VALUES (4, 4)
INSERT [dbo].[PersonLOB] ([PersonId], [LOBId]) VALUES (4, 5)
INSERT [dbo].[PersonLOB] ([PersonId], [LOBId]) VALUES (5, 3)
INSERT [dbo].[PersonLOB] ([PersonId], [LOBId]) VALUES (5, 4)
INSERT [dbo].[PersonLOB] ([PersonId], [LOBId]) VALUES (6, 5)
INSERT [dbo].[PersonLOB] ([PersonId], [LOBId]) VALUES (7, 1)
INSERT [dbo].[PersonLOB] ([PersonId], [LOBId]) VALUES (8, 2)
INSERT [dbo].[PersonLOB] ([PersonId], [LOBId]) VALUES (8, 3)

Итак, на стороне пользовательского интерфейса отобразите образец данных

FirstName    LastName    LOBs               ManagerName        Active

Alfredo      Mando       Banking                               Y
Alejandro    Mendoza     Banking, Insurance                    Y
Berto        Lao         Insurance          Alejando Mendoza   Y
.
.
.

Итак, вопрос:

Как сделать Я выбираю набор результатов с учетом нескольких фильтров условий поиска для каждого столбца в T SQL?

Данный образец фильтра условий поиска из пользовательского интерфейса

FirstName: 'al', 'o'

LastName: 'do'

LOB: 'Banking'

Актив: 'Y'

Ожидаемый результат:

FirstName    LastName    LOBs               ManagerName        Active

Alfredo      Mando       Banking                               Y
Alejandro    Mendoza     Banking, Insurance                    Y
...