postgrsql select문 에 대한 질문 0 2 486

by 아이언조 [SQL Query] postgrsql [2021.09.07 14:55:42]


안녕하세요 제가 insert 쿼리를 작성중인데 해결이 안되서 여쭤보려고 합니다.
아래의 쿼리를 작동하게되면
insert into tb_cnv(
			std_dt,
			patient_id,
			file_id,
			rowid,
			1,
			2,
			3,
			4,
			5,
			6,
			create_id,
			create_dt,
			update_id,
			update_dt
		)values(
			to_char(now(), 'YYYY-MM-DD'),
			(select patient_id from id_enc where file_nm = '831988cf17f5b1b202b8ea654be6a88b6744786955c952e9f452d153c47c687b'), 
			'831988cf17f5b1b202b8ea654be6a88b6744786955c952e9f452d153c47c687b',
			40,
			'Gbl,43r)',
			'852.0',
			'R',
			'18.0',
			'18.0',
			'0.0',
			'adminSuper', 
			now(), 
			'adminSuper',
			now()  
		);

굵게 표시한 이 부분에서 쿼리작성이 멈췄는데요

(select patient_id from id_enc where file_nm = '831988cf17f5b1b202b8ea654be6a88b6744786955c952e9f452d153c47c687b' ) 

where 조건을 만족하면 patient_id  값이 들어가고 만족하지 않는다면 '831988cf17f5b1b202b8ea654be6a88b6744786955c952e9f452d153c47c687b' 이 값을 넣으려는데

select 
	case
		when file_nm = '831988cf17f5b1b202b8ea654be6a88b6744786955c952e9f452d153c47c687b' then patient_id
		else '831988cf17f5b1b202b8ea654be6a88b6744786955c952e9f452d153c47c687b'
	end as patient_id
from
	id_enc;

이렇게 case when 을 사용하면 반환값이 여러개여서 오류가 발생하고

select
	coalesce(patient_id, '831988cf17f5b1b202b8ea654be6a88b6744786955c952e9f452d153c47c687b') as COALESCE_RESULT
from
	id_enc
where
	file_nm = '831988cf17f5b1b202b8ea654be6a88b6744786955c952e9f452d153c47c687b';

coalesce 함수를 사용해도 이것도 조건이 맞지않을때는 값이 출력되지 않습니다..

제가 원하는 결과를 구현하려면 어떻게 해야할까요

 

by pajama [2021.09.07 18:32:40]

값이 여러건이라면 insert into tb_cnv (...) select  to_char(now(), 'YYYY-MM-DD'), case when ...end, ... from id_enc 같은 식으로 실행하시면 되지 않을까요?


by 마농 [2021.09.07 18:39:11]

1. 집계함수를 이용해 null 1행을 출력하게 하는 방법
- 변경전 : (SELECT COALESCE(patient_id, 'abc') ...)
- 변경후 : (SELECT COALESCE(MIN(patient_id), 'abc') ...)
2. 서브쿼리 전체를 Coalesce 하는 방법
- 변경전 : (SELECT COALESCE(patient_id, 'abc') ...)
- 변경후 : COALESCE((SELECT patient_id ...), 'abc')

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입