2009-06-18 8 views
1

도와주세요! 나는 SQL 프로그래밍에 새로운 브랜드이고, 내가 따라갈 때 모든 것을 스스로 가르치고있다. 드디어 해결할 수없는 문제가 생겼습니다. 희망을 갖고 누군가가 도울 수 있기를 바랍니다. 나는 다음 표를 가지고있다. 필자가해야 할 일은 FROISEDI의 RECDATE를 사용하고 WEI4CPP에서 그 날짜를 포함하여 모든 고유 날짜 (I4C7DZ)를 계산하는 것입니다. 나는 아래 코드를 사용했는데 동일한 CACLAIM 값을 가진 레코드가있을 때까지 작동하는 것 같습니다. 또한 두 개의 레코드가 동일한 CACLAIM과 DOI를 가지므로 내 코드가 작동하지 않습니다. 어쨌든, FROISEDI의 AGCLAIM을 사용해야하지만 Counts 테이블로 가져 오는 방법을 모르겠습니다. 아, 그리고 저는 SAS를 사용하고 있습니다. 그래서 그것은 정확히 SQL이 아니지만 정말로 닫습니다. 어떤 도움을 주셔서 감사합니다! 내가 사용했습니다SQL의 상관 쿼리에 대한 도움말


TABLE: FROISEDI 
AGCLAIM RECDATE CACLAIM  DOI 
09073589 1/29/09 09 41615 1/28/09 
09115390 3/01/09 00012HR09 2/23/09 
09234567 4/20/09 003140010 1/2/09 
09154826 5/01/09 003140010 4/28/09 

TABLE: WEI4CPP 
I4C7DZ  I4X6TX  I4YWTX I4YFTX 
1/28/09    1/28/09 09 41615 
1/29/09 09073589 1/28/09 09 41615 
1/30/09 09073589 1/28/09 09 41615 
2/24/09    2/23/09 00012HR09 
2/28/09    2/23/09 00012HR09  
3/01/09 09115390 2/23/09 00012HR09 
3/15/09 09115390 2/23/09 00012HR09 
1/15/09    1/02/09 003140010 
1/20/09    1/02/09 003140010 
2/08/09    1/02/09 003140010 
3/19/09    1/02/09 003140010 
4/20/09 09234567 1/02/09 003140010 
5/01/09 09154826 4/28/09 003140010 

TABLE I NEED TO PRODUCE: COUNTS 
AGCLAIM  CACLAIM DOI  SUBMITS 
09073589 09 41615  1/28/09 2 
09115390 00012HR09 2/23/09 3 
09234567 003140010 1/02/09 5 
09154826 003140010 4/28/09 1 

CODE :

PROC SQL; 
CREATE TABLE COUNTS AS 
SELECT I4YWTX AS DOI3, 
I4YFTX AS CLMNUM2, 
COUNT(DISTINCT I4C7DZ) AS SUBMITS 
FROM WAREHOUS.WEI4CPP A 
WHERE I4C7DZ<=(SELECT RECDATE 
     FROM FROISEDI 
     WHERE FROISEDI.CACLAIM=A.I4YFTX 
     AND FROISEDI.DOI=A.I4YWTX) 
GROUP BY WEI4CPP.I4YFTX, WEI4CPP.I4YWTX; 
QUIT; 
+0

공백 I4X6TX가 바로 앞에있는 9234567 앞에 오는 4 줄이 09234567에 속한다는 것을 어떻게 알 수 있습니까? – longneck

+0

WEI4CPP에는 내가 보여준 것보다 더 많은 필드가 있습니다. 각 기록은 우리 부서에 제출 한 내용을 기반으로하며 기록에있는 모든 내용이 시스템 점검에 맞을 때까지 제출을 수락하지 않고 대행사 청구 번호 (I4X6TX)를 지정합니다. 대행사 청구 번호가있는 기록은 Google이 승인 한 첫 번째 기록입니다. 나는 우리가 그것을 수락하기 전에 그들이 몇 번이나 제출했는지 세지려고 노력하고있다. FROISEDI는 우리가 받아들이는 모든 별개의 기록입니다. –

+0

# @ longneck이 질문 한 질문 반복 : I4YFTX = "003140010"인 WEI4CPP의 4 행이 AGCLAIM = "09154826"이 아닌 AGCLAIM = "09234567"과 어떻게 연관되어 있는지 알 수 있습니까? 두 AGCLAIM 값은 CACLAIM = "003140010"과 연관되어 있기 때문에 I4XCTX 값이없는 WEI4CPP 행이 클레임에 속한다고 말할 수있는 분명한 방법이 없습니다 ... 또한 열과 테이블의 이름도 나는 지금까지 읽지 못한 것을 오해했습니다. 그들은 질문을 이해하기가 더 어렵습니다. –

답변

1

그것을 테스트하지 않았다. 내가 자세히 논리를 통과하지 않은이

SELECT 
    AGCLAIM, 
    CACLAIM,  
    DOI, T.cnt + 1 AS SUBMITS 
FROM 
    FROISEDI 
    INNER JOIN 
    (
    SELECT 
     COUNT(*) cnt, 
     I4YFTX , 
      I4YWTX  
    FROM 
     WEI4CPP 
    WHERE 
     ISNULL(I4X6TX,0) = 0 
    GROUP BY 
     I4YFTX, I4YWTX  
    ) T 
    ON FROISEDI.CACLAIM = T.I4YFTX 
+0

동일한 CACLAIM (일명 I4YFTX)이지만 다른 DOI (I4YWTX)가있는 위의 예에서 마지막 두 개와 같은 인스턴스가있는 경우이 작업이 가능합니까? 그리고 그들이 동일한 CACLAIM과 DOI를 가지고 있고 그것들을 구별하는 유일한 것이 WEI4CPP의 모든 기록에없는 AGCLAIM입니까? –

+0

구름을 추가하면 조건이 달라집니다. 나는 그것을 점검하고 업데이트 할 것이다. – THEn

+0

질문은 I4X6TX가 비어있을 때 어떻게 그것이 속해 있는지 알 수 있습니까? – THEn

0

을 시도했지만 모두 날짜는 숫자 값으로 저장되고 있는지 확인하십시오. 나는 GT와 LT가 당신이 생각하는 방식대로 작동하지 않도록 char로 저장된 날짜를 두 번 이상 보았습니다.

0

WEI4CPP.I4YFTX는 FROISEDI.CACLAIM 연결 값이고 WEI4CPP.I4YWTX는 FROISEDI.DOI 인 것처럼 보입니다. 이것처럼 간단합니까? 행이 동일한 DOI 및 CACLAIM이있는 경우

SELECT fr.AGCLAIM, fr.CACLAIM, fr.DOI, COUNT(we.I4C7DZ) as SUBMITS 
FROM FROISEDI fr 
     INNER JOIN WEI4CPP we 
      ON we.I4YFTX = fr.CACLAIM 
      AND  we.I4YWTX = fr.DOI 
      AND  ISNULL(we.I4X6TX, fr.AGCLAIM) = fr.AGCLAIM 
WHERE we.I4C7DZ <= fr.RECDATE 
GROUP BY fr.AGCLAIM, fr.CACLAIM, fr.DOI 

참고이 문제가있을 것입니다,하지만 WEI4CPP.I4X6TX 열은 비어 있습니다. 이 경우 어떤 AGCLAIM이 속해 있는지에 대한 귀하의 비즈니스 규칙을 알지 못합니다. 필자가 채워지거나 일치하지 않으면 거부 할 수 있지만 필자는 그렇지 않은 경우 날짜와 관련된 정보 나 기타 정보가 필요합니다.