programing

null 값을 바꾸는 동안 두 행을 하나로 병합

madecode 2023. 7. 10. 23:34
반응형

null 값을 바꾸는 동안 두 행을 하나로 병합

다음과 같은 데이터베이스 테이블이 있다고 가정해 보겠습니다.

Name | Nickname | ID
----------------------
Joe    Joey       14
Joe    null       14

이제 null 값을 대체하면서 이 두 열을 하나로 병합하는 선택 문을 수행하려고 합니다.결과는 다음과 같습니다.

Joe, Joey, 14

이를 관리하는 SQL 문은 무엇입니까(가능한 경우)?

가장 간단한 솔루션:

SQL> select * from t69
  2  /

NAME       NICKNAME           ID
---------- ---------- ----------
Joe        Joey               14
Joe                           14
Michael                       15
           Mick               15
           Mickey             15

SQL> select max(name) as name
  2         , max(nickname) as nickname
  3         , id
  4  from t69
  5  group by id
  6  /

NAME       NICKNAME           ID
---------- ---------- ----------
Joe        Joey               14
Michael    Mickey             15

SQL>

만약 당신이 11gR2를 가지고 있다면, 당신은 새로운 flanged LISTAG() 기능을 사용할 수 있지만, 그렇지 않으면 그것은 NAME과 NICOME 열을 연결하는 SELECT로 위의 문을 감쌀 만큼 충분히 간단합니다.

AFAIK, 질문은 clear.so 이 아닙니다. 저는 여기서 몇 가지 가정을 하고 있습니다.출력에는 두 행의 첫 번째 열과 세 번째 열이 모두 동일합니다.두 번째 필드만 다릅니다.

그래서 당신은 간단하게 선택 퀘스트를 쓸 수 있습니다.

select one.name,two.nick_name,one.id from 
(select name,id from your_tb group by name,id) one,
your_tb two 
where two.nickname is not NULL 
and two.name=one.name 
and two.id=one.id;

우리가 이것을 조정할 수 있을지도 모르지만, 나는 SQL 쿼리를 조정하는 것에 능숙하지 않지만, 이것이 당신이 필요로 하는 방식이라고 생각합니다.

언급URL : https://stackoverflow.com/questions/3263126/merging-two-rows-to-one-while-replacing-null-values

반응형