SQL Server 2005를 사용하면서 가지고있는 테이블의 일부 데이터를 내보내려고합니다. 그러나이를 수행하기 전에 동일한 값 항목이 여러 항목을 포함 할 수있는 "VisitNumber"라는 필드를 기반으로 상태 열을 업데이트해야합니다. 다음과 같은 방식으로 테이블을 설정했습니다. 거기에 더 많은 열이 있지만, 난 그냥SQL Server - 타임 스탬프에 따라 중복 행과 고유 한 행을 사용하여 열 업데이트
ID Name MyReport VisitNumber DateTimeStamp Status
-- --------- -------- ----------- ----------------------- ------
1 Test John Test123 123 2014-01-01 05.00.00.000
2 Test John Test456 123 2014-01-01 07.00.00.000
3 Test Sue Test123 555 2014-01-02 08.00.00.000
4 Test Ann Test123 888 2014-01-02 09.00.00.000
5 Test Ann Test456 888 2014-01-02 10.00.00.000
6 Test Ann Test789 888 2014-01-02 11.00.00.000
필드 노트
- ID 열이
- MyReport를가있다 증가 숫자의 고유 한 ID입니다 내 문제와 관련된 무엇에 걸었습니다 텍스트 값이며 실제로 수천 개의 문자가 될 수 있습니다. 단순화를 위해 단축되었습니다.
: 내 시나리오에서는 텍스트가내가 두 가지 조건은 "F"상태에두고 해결해야 필드의
- 나머지는 VARCHAR
내 목표는 완전히 다른 것 * 방문 번호가 하나만있는 경우 "F"상태 열을 업데이트하십시오
* 방문 번호가 둘 이상인 경우 가장 빠른 시간 소인을 기준으로 "F"만 입력하십시오. 다른 사람은 "A"의 상태에 넣어
그래서 다시 내 테이블로 가고, 여기에 기대가
ID Name MyReport VisitNumber DateTimeStamp Status
-- --------- -------- ----------- ----------------------- ------
1 Test John Test123 123 2014-01-01 05.00.00.000 F
2 Test John Test456 123 2014-01-01 07.00.00.000 A
3 Test Sue Test123 555 2014-01-02 08.00.00.000 F
4 Test Ann Test123 888 2014-01-02 09.00.00.000 F
5 Test Ann Test456 888 2014-01-02 10.00.00.000 A
6 Test Ann Test789 888 2014-01-02 11.00.00.000 A
내가 중복의 각 종류를 분할하여이 문제를 해결할 수있는 생각/triplicates + (2,3,4,5). 그런 다음 다른 모든 (또는 모든 3,4,5 행)을 업데이트합니다. 그런 다음 원본 테이블에서 해당 테이블을 삭제하고 함께 결합하여 SSIS의 데이터를 내 보냅니다. 그러나 나는 그것을 처리하는 훨씬 더 효율적인 방법이 있다고 생각하고있다.
의견이 있으십니까? 이 상태 열의 SQL에서 테이블을 직접 업데이트 한 다음 SSIS를 통해 정상적으로 내보냄으로써이 작업을 수행 할 수 있습니다. 또는 필요한 조건에 맞게 열을 조작 할 수있는 방법이있는 경우 SSIS에서이 모든 작업을 수행 할 수 있습니다. 나는 이걸 어떻게 진행해야할지 모르겠다.
감사 @Kapol을하는 데 도움이됩니다. 나는 또한 Common Table Expressions에 대해 더 많이 배웠다. 다시 한 번 감사드립니다! – user1937434