데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
아래와 같이 구문을 생성했는데요 어떤분의 예제에서
동적SQL이 아닌 정적SQL 로 만든것이라고 한것입니다.
맞는 것인지 궁금합니다.
그리고 아래 Then 이후에 컬럼을 여러개 뿥여도 되는 것인지 안되는 것인지 방법이 있는 것인지 알고 싶습니다.
A와 B는 같은 컬럼을 사용해도 되는 것이어서요
ex)
Case @aChk
When 'A' or 'B' Then a_reason, a_result
When 'counsel' Then b_reason, b_result
when 'prescribe' Then b_reason, c_result
이런식으로 말입니다.
////////////////////////////////////// //////////////////////////////////
CREATE PROCEDURE USP_KPIS_MODAL_INFO
@treat_id varchar(30) ,
@sChk char(10)
As
Declare @aChk varchar(20)
Set @aChk= @sChk
SELECT
req_id,
Case @aChk
When 'A' Then a_reason
When 'B' Then b_reason
when 'C' Then b_reason
When 'D' Then c_reason
End as reason,
Case @aChk
When 'A' Then a_result
When 'B' Then a_result
when 'C' Then b_result
When 'D' Then c_result
End as reason,
FROM OCS_TREAT A
WHERE treat_id = @treat_id
Comment 1
-
이리
2017.10.23 11:26
https://docs.microsoft.com/ko-kr/sql/t-sql/language-elements/case-transact-sql
조건절은 여러개 지정이 가능하지만 결과는 하나여야 합니다.
CASE
WHEN 변수 IN ('A', 'B') THEN ...