Условное разделение служб SSIS

Я импортирую набор данных в OLE DB SQL SERVER. У меня есть две колонки:

ID  CONDITION  CLIENT
1   A11111     G12345
1   X11111     G23456
2   A11111     G12345
2   A11111     G12345
3   A11111     G12345
3   A11111     G23456
4   X11111     G12345

Мне нужно удалить дубликаты и загрузить таблицу с преобразованием. Если дубликаты столбца condition имеют одинаковые значения, принимают это значение, если они отличаются, принимают меньшее значение. То же самое со столбцом client. Я перенес это во временную таблицу на сервере SQL, сделал ранжирование отфильтрованным с использованием rank==1 для обоих условий с использованием условного разделения. Все работало хорошо, но для двух записей этот ранг в условном столбце был принят по умолчанию, но эта запись должна проходить через конвейер, поскольку ранг клиента равен 1. Любые предложения, чтобы решить эту проблему, пожалуйста?


person Cara Tanner    schedule 31.03.2014    source источник
comment
не уверен, что понимаю проблему, не могли бы вы опубликовать пример неправильного и желаемого вывода?   -  person Jayvee    schedule 01.04.2014
comment
Например, две записи после ранжирования в обоих столбцах выглядят так: ID Condition Client RankOnCondition RankOnClient 1 A11111 G42345 1 2 1 X11111 G23456 2 1, когда я передаю эту запись через условное разбиение при использовании рангов, эта запись становится по умолчанию, потому что даже если она проходит через один ранг условное разделение идет по умолчанию из другого разделения. Любые возможные решения для переноса записей в базу данных   -  person Cara Tanner    schedule 01.04.2014


Ответы (2)


Самый простой способ удалить дубликаты — использовать предложение GROUP BY или DISTINCT в операторе select.

В качестве альтернативы, если вы ищете последние значения, оператор row_number(), сгруппированный по идентификатору, упорядоченный по UpdateDate? нисходящий. Результат row_number на идентификатор позволит вам выбрать только те строки, у которых row_number равен 1 на идентификатор. Для аналогичного примера Row_Number посмотрите это

person Daryl Wenman-Bateson    schedule 01.04.2014

ваш первый условный оператор должен иметь 2 вывода: положительный, когда ранг == 1, должен выводиться в преобразование UNION ALL, а вывод по умолчанию - во второй условный. второй условный оператор также должен выводить rank==1 для преобразования UNION ALL.

Выход UNION ALL будет иметь любую строку, которая прошла одно ИЛИ другое условие.

person Jayvee    schedule 01.04.2014