문제

기본 DB에서 단일 테이블을 만들었습니다. tblGlobalIDMapping 이는 모든 항목에 안내를 할당하고 단일 ID 저장소를 제공하기 위해 다른 3 개의 기본 ID를 앱에 저장합니다.

새 테이블은 다음 구조에 있습니다 ->

AppGlobalID     uniqueidentifier     NoNulls
PersonID        int                  NoNulls
DRIMaster       int                  Nulls
DRIClient       int                  Nulls

필요한 정보는 다음 부분 구조가있는 다른 DB (동일한 서버)의 테이블에 있습니다 ->

PersonID                int             NoNulls
ApplicationID           tinyint         NoNulls
PersonApplicationID     varchar(14)     NoNulls

사람 (ID# 13579)은 각 신청서에 대해 두 번째 표 1에 표시됩니다. ApplicationID 열에는 Drimaster의 경우 1 숫자, Driclient의 경우 1 숫자를 저장합니다.

해당 테이블에서 새 테이블로 대량 사본/인서트를 수행해야하지만 새 테이블에 3 개의 메인 ID를 기록하는 1 행 만 원합니다.

이것은 내가 지금까지 가지고있는 것이지만 이것은 각 개인에 대해 행을 반환합니다.

SELECT PersonID, 
    CASE
        WHEN ApplicationID = 1
        THEN PersonApplicationID
    END AS 'DRIMaster', 
    CASE
        WHEN ApplicationID = 6
        THEN PersonApplicationID
    END AS 'DRIClient'
FROM tblApplicationAssociation
WHERE ApplicationID IN (1,6)

아래를 반환합니다 ->

PersonID  DRIMaster   DRIClient
_______________________________
108574    71163       NULL
108574    NULL        71163
도움이 되었습니까?

해결책

집계는 널을 무시하므로 ....

SELECT PersonID, 
       Min(CASE
                WHEN ApplicationID = 1
                THEN PersonApplicationID
        END) AS 'DRIMaster', 
       Min(CASE
                WHEN ApplicationID = 6
                THEN PersonApplicationID
        END) AS 'DRIClient'
FROM tblApplicationAssociation
WHERE ApplicationID IN (1,6)
Group By PersonId
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top