2014-02-22 3 views
0

SQL Server 2005를 사용하고 있습니다. 두 행을 하나로 병합하려고했습니다.SQL에서 두 행을 하나로 병합

ID 번호와 ApprovalCode NULL 값을 제외하려면 도움이 필요합니다.

SELECT DISTINCT CASE 
        WHEN (CONVERT(varchar(12), t1.referenceInfo)) like '1000%' THEN 
        (+ '"') + RTRIM(CONVERT(varchar(12), t1.referenceInfo)) + '"' 
        ELSE 
        '0' 
       END AS [ identity number ], 
       CASE 
        WHEN LEN(ISNUMERIC(CONVERT(varchar(12), t2.referenceInfo))) < 12 THEN 
        (+ '"') + RTRIM(CONVERT(varchar(12), t2.referenceInfo)) + '"' 
        WHEN (CONVERT(varchar(12), t2.referenceInfo)) LIKE '10%' THEN 
        (+ '"') + RTRIM(CONVERT(varchar(12), t2.referenceInfo)) + '"' 
        ELSE 
        '0' 
       END AS approvalcode 
    FROM dbo.GUEST_CHECK_LINE_ITEM_HIST t1 
INNER JOIN dbo.GUEST_CHECK_LINE_ITEM_HIST t2 
    ON t1.guestCheckID = t2.guestCheckID 
WHERE t1.guestCheckID = 78362401 
    AND (t1.referenceInfo) LIKE '1000%' 
    and (t2.referenceInfo) NOT LIKE '1000%' 
    --AND LEN(ISNUMERIC(CONVERT(varchar(12), t2.referenceInfo))) < 12 
GROUP BY t1.referenceInfo, t2.referenceInfo 

참조 테이블 내가 값을 주차하는 식별 번호 1만% 추천하고 값 승인 코드 이하 12 개 자리를 주차 원 http://postimg.org/image/45q41bogf/

아래로. 승인 코드가 12 자리 미만이면 null입니다.

감사합니다이

결과에 나를 도울 수 있다면 http://postimg.org/image/ngr9yzb6z/

답변

0

시도 :

SELECT DISTINCT CASE 
        WHEN LEN(CONVERT(varchar(12), t1.referenceInfo)) > 11 THEN 
        (+ '"') + RTRIM(CONVERT(varchar(12), t1.referenceInfo)) + '"' 
        WHEN LEN(CONVERT(varchar(12), t2.referenceInfo)) > 11 THEN 
        (+ '"') + RTRIM(CONVERT(varchar(12), t2.referenceInfo)) + '"' 
        ELSE 
        '0' 
       END AS [ identity number ], 
       CASE 
        WHEN LEN(CONVERT(varchar(12), t1.referenceInfo)) < 12 THEN 
        (+ '"') + RTRIM(CONVERT(varchar(12), t1.referenceInfo)) + '"' 
        WHEN LEN(CONVERT(varchar(12), t2.referenceInfo)) < 12 THEN 
        (+ '"') + RTRIM(CONVERT(varchar(12), t2.referenceInfo)) + '"' 
        ELSE 
        '0' 
       END AS approvalcode 
    FROM dbo.GUEST_CHECK_LINE_ITEM_HIST t1 
INNER JOIN dbo.GUEST_CHECK_LINE_ITEM_HIST t2 
    ON t1.guestCheckID = t2.guestCheckID 
WHERE t1.guestCheckID = 78362401 
    AND t2.referenceInfo is not null 
    and t1.referenceInfo is not null 
GROUP BY t1.referenceInfo, t2.referenceInfo 

where 절의 2 줄을 변경했습니다. "<> 0"을 사용했는데 "is not null"을 사용하려고했던 것 같습니다.

0

시도 .. 마지막에

HAVING [identity number] is not null and approvalcode is not null 

를 추가

+0

나는 질문을 편집했다. 제발 도와주세요. ID 필드에 1000XXX로 시작하는 모든 숫자가 필요하고 승인 코드에서 10XXXX로 시작해야했습니다. 승인 코드에 10을 반환하는 숫자 시작은 없습니다. – alexcctan