Вернуть значение столбца в другой таблице, соответствующей критериям - PullRequest
0 голосов
/ 26 марта 2020

У меня есть две таблицы, в которых есть 3 общих столбца, однако строки различаются, а указанная строка c для имен содержит дублированные значения для других значений других 2 столбцов, что приводит к отчетам о неоднозначности из y.

Тогда я планировал использовать мою первую таблицу, таблицу A и просто импортировать туда с помощью функции и через вычисляемый столбец (поскольку таблицы A и B обновляются еженедельно), значения из таблицы B.

Теперь это моя попытка создать функцию:

CREATE FUNCTION dbo.ReturnFlag
(
    @name nvarchar(max)
    , @date smalldatetime
    , @DeptID nvarchar(max)
)
RETURNS bit as 
begin 
    return [SpecialFlag]
    from TABLEB
    where [Name] = @name and [Date] = @date and [department] = @DeptID
end

Однако, конечно, синтаксис неверен. Присоединение к таблицам может быть вариантом, но, опять же, таблицы A и B обновляются еженедельно, и я не хочу присоединяться к этому еженедельнику. Таблицы A и B также используются другим программным обеспечением для отчетов. Моя цель состоит в том, чтобы добавить вычисляемый столбец, который использует вышеуказанную функцию, чтобы получить соответствующее значение из таблицы B. У меня есть 3 нужные мне переменные, поскольку имя не уникально, но если я буду искать в таблице B имя, дату и отдел в в то же время я получу уникальную строку, и оттуда я могу получить значение таблицы B в столбце SpecialFlag. Я считаю, что я придерживаюсь правильного подхода в том смысле, что хочу, чтобы это было одноразовое исправление, поэтому каждый раз, когда я обновляю таблицы A и B, новый вычисляемый столбец обновляется сам, и мне не нужно выполнять другой запрос.

1 Ответ

1 голос
/ 26 марта 2020

Я думаю, вы хотите: я склонен писать скалярную встроенную функцию без begin / end. Тем не менее, вы можете включить их, если хотите:

create function dbo.ReturnFlag (
    @name nvarchar(max),
    @date smalldatetime,
    @DeptID nvarchar(max)
) returns bit as 
    return (select [SpecialFlag]
            from TABLEB
            where [Name] = @name and [Date] = @date and 
                  [department] = @DeptID
            );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...