SQL сервер SSIS OLEDB источник к месту назначения? - PullRequest
0 голосов
/ 29 марта 2012

enter image description here

OLEDB source стол

Name,Age,Seq
Gauraw,30,1
Gauraw,31,1
Kiran,28,3
Kiran,29,3
kiran,28,3
Venkatesh,,4
Venkatesh,28,4

Я хочу OLEDB destination стол, как

Gauraw,31,1
kiran,28,3
Venkatesh,28,4

В основном я создаю резервную копию таблицы от oledb_source до oledb_destination и мое условие, если seq столбец повторяется, я хочу, чтобы последняя строка с этим seq столбцом, как в приведенной выше таблице Kiran,28,3 является последней записью с seq, имеющей значение 3.

Как мне добиться этого результата в задаче потока данных служб SSIS с oledb source до oledb destination.

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Выбор источника OLE DB

Измените режим доступа к данным на «Команда SQL», затем вставьте запрос ниже

with x as   (select *,rn=row_number() over (order by name)
            from    source)

select a.*
from    x a , 
        (select name , max(rn) rn
        from x
        group by name) b
where   a.rn = b.rn

Теперь вы можете переместить необходимый столбец

0 голосов
/ 31 марта 2012

Поскольку SSIS вставляет данные в пакетном режиме, вы не можете решить, что произойдет с одной строкой, основываясь на том, что произошло с предыдущими, поэтому я предлагаю здесь разобраться с этим в исходном запросе.Я не знаю вашу логику, но похоже, что вы хотите группировать по имени и получить максимальный возраст и последовательность.Поскольку возраст и последовательность никогда не уменьшатся, вы можете использовать функцию MAX:

select Name, max(age) as age, max(seq) as seq
from your_table
group by Name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...