Я вставляю данные в таблицу пользователя из таблицы журнала запросов. В таблице журнала запросов пользовательский псевдоним появляется каждый раз, когда выполняется запрос. В таблице «Пользователи» я хочу, чтобы столбец «Пользовательский псевдоним» имел псевдоним пользователя для каждой комбинации даты и имени предприятия, который применяется к псевдониму, без повторяющихся строк. Причина, в которой я нуждаюсь в этом, заключается в том, что я создаю визуальное представление, которое должно отражать различное количество пользователей, которые выполнили запрос для каждого бизнеса, по годам. Мне также нужна способность обрезать псевдоним, бизнес и дату. Моя цель состоит в том, чтобы результат выглядел так.Не удалось написать инструкцию выбора, которая возвращает 1 строку за каждый год, когда псевдоним пользователя появляется в журнале запросов.
User Alias LOB Date
Joe Business 1 2015-01-01
Joe Business 1 2016-01-01
Carol Business 1 2015-01-01
Carol Business 1 2016-01-01
Вот результат, который я в настоящее время получаю, используя приведенное ниже описание.
User Alias LOB Date
Joe Business 1 2015-01-01
Carol Business 1 2015-01-01
Я знаю, что инструкция DISTINCT должна быть выполнена, но после этого я застрял.
INSERT INTO [DBO].[USERS] ([User Alias], [LOB], [Date])
SELECT DISTINCT [User Alias], [LOB] , (SELECT TOP 1 [Date] FROM Business) [Date]
FROM Business [LOG]
WHERE NOT EXISTS (
SELECT 1
FROM [dbo].[Users] [DIM]
WHERE [LOG].[User Alias] = [DIM].[User Alias]
AND [LOG].[LOB] = [DIM].[LOB]
AND [LOG].[Date] = [DIM].[Date]
)
AND [User Alias] IS NOT NULL
AND [LOB] IS NOT NULL
Какова ваша версия sql sever, поддерживает ли она MERGE? – Serg
2016. Он поддерживает объединение – LostInTheSauce
Я должен уточнить, что каждая строка должна отражать пользователя, год и бизнес, которые возникают в запросе, без повторения строки. Пользователь может выполнить до 100 запросов в определенный день. Все, о чем я беспокоюсь, - это если пользователь выполнил один запрос за данный год. – LostInTheSauce