정말 오랜만에 다시 sql 공부를 하고 있는데 쉬울듯 하면서 풀리지 않는 문제가 있어
글을 올립니다. 이게 가능할까요?
테이블은 간단 합니다.
아래와 같은 테이블인데 no 컬럼는 유니크 하고 작업일 컬럼는 값이 있기도하고 없기도 합니다.
원하는 상황은 작업일값이 만약 null이거나 값이 없으면
바로 이전에 있는 작업일 값이 업데이트 되도록 하는겁니다.
ex) 현 테이블
no 작업일
1 2008-01-02 00:00:00.000
2 NULL
3 NULL
4 2008-01-03 00:00:00.000
5 NULL
6 NULL
7 NULL
8 NULL
9 2008-01-04 00:00:00.000
10 NULL
11 NULL
ex) 원하는 결과
no 작업일
1 2008-01-02 00:00:00.000
2 2008-01-02 00:00:00.000
3 2008-01-02 00:00:00.000
4 2008-01-03 00:00:00.000
5 2008-01-03 00:00:00.000
6 2008-01-03 00:00:00.000
7 2008-01-03 00:00:00.000
8 2008-01-03 00:00:00.000
9 2008-01-04 00:00:00.000
10 2008-01-04 00:00:00.000
11 2008-01-04 00:00:00.000
고수님들 부탁 드립니다~~~
Comment 3
-
처리짱
2016.09.12 13:00
-
손꽁쥐
2016.09.12 17:39
SELECT A.no,CASE WHEN A.작업일 IS NULLTHEN (SELECT MAX(작업일) FROM 테이블명 WHERE no < A.no AND 작업일 IS NOT NULL)ELSE A.작업일END AS '작업일'FROM 테이블명 A혹은SELECT A.no, ISNULL(A.no, (SELECT MAX(작업일) FROM 테이블명 WHERE no < A.no AND 작업일 IS NOT NULL))FROM 테이블명 A -
kohsangho
2016.09.13 10:18
처리짱님 , 손꽁쥐님 감사합니다.
정말 많은 도움 되었습니다.
SELECT a.no, CASE WHEN a.no IS NULL THEN b.작업일 ELSE a.작업일 END as 작업일
FROM 테이블 as a
LEFT JOIN 테이블 as b
ON a.no + 1 = b.no
order by a.no ASC
테스트 안해 봤습니다;;