강의

멘토링

커뮤니티

Inflearn コミュニティ Q&A

947778832 のプロフィール画像
947778832

投稿した質問数

チャンレ先生と一緒に学ぶ、簡単で面白いSQLの話

여러 컬럼 중 null값이 아닌 값 가져오기

解決済みの質問

作成

·

362

0

안녕하세요 질문 드립니다!

 

A 1 2 3 null 5 null null null 7

 

이렇게 A라는 항목에 한해서 9개의 컬럼이 있는데 중간 중간 null 값이 있는 경우 이전 값들 중 최근 값을 가져오게끔 하는 방법이 있을까요?

 

위 예시로, 빨간색 null 값은 3이 나와야되고

7 전의 null 값 3개에 대해서는 5, 5, 5 이렇게 나오게끔 하고싶습니다

sqlmysqloracledbms/rdbmsmssql

回答 1

0

jangrae님의 프로필 이미지
jangrae
インストラクター

안녕하세요?

질문해 주셔서 감사합니다~

간단하게 아래와 같이 예제를 만들어 봤습니다.

COALESCE() 함수를 사용하면 됩니다.

참고하시기 바랍니다.

-- 테이블 만들기
CREATE TABLE Test (
	name varchar(10),
	val01 int,
	val02 int,
	val03 int,
	val04 int,
	val05 int,
	val06 int,
	val07 int,
	val08 int,
	val09 int
);

-- 데이터 추가
INSERT INTO Test VALUES('A', 10, 20, 30, NULL, 50, NULL, NULL, NULL, 90);

-- 조회
SELECT  name,
        val01,
        COALESCE(val02, val01) AS val02,
        COALESCE(val03, val02, val01) AS val03,
        COALESCE(val04, val03, val02, val01) AS val04,
        COALESCE(val05, val04, val03, val02, val01) AS val05,
        COALESCE(val06, val05, val04, val03, val02, val01) AS val06,
        COALESCE(val07, val06, val05, val04, val03, val02, val01) AS val07,
        COALESCE(val08, val07, val06, val05, val04, val03, val02, val01) AS val08,
	COALESCE(val09, val08, val07, val06, val05, val04, val03, val02, val01) AS val09
	FROM Test;

/*
name	val01	val02	val03	val04	val05	val06	val07	val08	val09
-----------------------------------------------------------------------------
A	10	20	30	30	50	50	50	50	90
*/

감사합니다~

 

947778832 のプロフィール画像
947778832

投稿した質問数

質問する