변수 테이블 "@USERS"와 유효 날짜를 기반으로하는 USERCLASS의 DB 테이블이 있습니다. 내가해야 할 일은 결정된 날짜에 USERCLASS를 채우는 것입니다. 예:
@ 사용자
USERID | OTHER
--------------
A1 | 1
B1 | 2
C1 | 3
D1 | 4
DBCLASSTABLE
USERID | CLASS | EFFECTIVEDATE
------------------------------
A1 | ZZ | 2015-02-01
A1 | XX | 2014-02-01
B1 | TT | 2015-02-01
B1 | RR | 2014-02-01
etc..
2015-01-01의 날짜를 기준으로합니다. 작동 할 클래스는 두 가지 모두에 대해 2014 유효 클래스가됩니다.
내가 가진 것은 :
SELECT
USERID,
OTHER,
'CLASS' = (SELECT TOP 1
A.CLASS
FROM
DBCLASSTABLE A
JOIN @USERS B on A.USERID = B.USERID
WHERE A.USERID = B.USERID AND A.EFFECTIVEDATE < 2015-01-01
ORDER BY A.EFFECTIVEDATE DESC
)
FROM
@USERID
그러나 모든 레코드에 대해 DBCLASSTABLE의 TOP을 반환하므로 분명히 잘못된 작업을 수행했습니다.
USERID | OTHER | CLASS
----------------------
A1 | 1 | ZZ
B1 | 2 | ZZ
C1 | 3 | ZZ
D1 | 4 | ZZ
이 샘플 데이터를 사용하면
USERID | OTHER | CLASS
-----------------------
A1 | 1 | XX
B1 | 2 | RR
어떤 도움을 주시면 감사하겠습니다.
아마도 상관 하위 쿼리를 원할 것입니다. 귀하의 질문에 테이블이 언급되어 @USERS
있지만 언급 된 것은 없습니다 @USERIDS
. 나는 그들이 동일하다고 생각할 것입니다.
SELECT USERID, OTHER,
(SELECT TOP 1 c.CLASS
FROM DBCLASSTABLE c
WHERE c.USERID = u.USERID AND c.EFFECTIVEDATE < '2015-01-01'
ORDER BY A.EFFECTIVEDATE DESC
) as Class
FROM @USERS u;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다