[SQL] SQL Server의 DECODE () 함수
SQLSQL Server의 DECODE () 함수
SELECT PC_COMP_CODE,
'R',
PC_RESUB_REF,
DECODE(PC_SL_LDGR_CODE, '02', 'DR', 'CR'),
PC_DEPT_NO DEPT,
'', --PC_DEPT_NO,
PC_SL_LDGR_CODE + '/' + PC_SL_ACNO,
SUM(DECODE(PC_SL_LDGR_CODE, '02', 1, -1) * PC_AMOUNT),
PC_CHEQUE_NO CHQNO
FROM GLAS_PDC_CHEQUES
WHERE PC_RESUB_REF IS NOT NULL
AND PC_DISCD NOT IN ('d', 'D', 'T')
GROUP BY PC_RESUB_REF,
PC_COMP_CODE,
'JJ',
PC_SL_LDGR_CODE + '/' + PC_SL_ACNO,
PC_DEPT_NO,
PC_CHEQUE_NO,
DECODE(PC_SL_LDGR_CODE, '02', 'DR', 'CR')
위는 오라클 쿼리입니다; 어떻게 2005 SQL Server의 DECODE () 함수를 사용할 수 있습니까?
해결법
-
==============================
1.당신이 사용할 수있는 'CASE를 .. 언제 .. THEN .. ELSE .. END'SQL의 구문.
당신이 사용할 수있는 'CASE를 .. 언제 .. THEN .. ELSE .. END'SQL의 구문.
-
==============================
2.내가 제대로 질문을 이해한다면, 당신은 디코드하지만, T-SQL에서 동등합니다
내가 제대로 질문을 이해한다면, 당신은 디코드하지만, T-SQL에서 동등합니다
Select YourFieldAliasName = CASE PC_SL_LDGR_CODE WHEN '02' THEN 'DR' ELSE 'CR' END
-
==============================
3.그냥 완전성에 대해 (아무도 다른 가장 확실한 대답을 게시하지 않기 때문에)
그냥 완전성에 대해 (아무도 다른 가장 확실한 대답을 게시하지 않기 때문에)
신탁:
DECODE(PC_SL_LDGR_CODE, '02', 'DR', 'CR')
MSSQL (2012+) :
IIF(PC_SL_LDGR_CODE='02', 'DR', 'CR')
나쁜 소식 :
4 개 이상의 인수 DECODE는 못생긴 IIF 캐스케이드 초래
-
==============================
4.다음과 같이 SQL Server의 함수를 만들고 dbo.DECODE와 DECODE 교체
다음과 같이 SQL Server의 함수를 만들고 dbo.DECODE와 DECODE 교체
CREATE FUNCTION DECODE(@CondField as nvarchar(100),@Criteria as nvarchar(100), @True Value as nvarchar(100), @FalseValue as nvarchar(100)) returns nvarchar(100) begin return case when @CondField = @Criteria then @TrueValue else @FalseValue end end
-
==============================
5.그것은 쉽게 할 수있다 :
그것은 쉽게 할 수있다 :
select CASE WHEN 10 > 1 THEN 'Yes' ELSE 'No' END
-
==============================
6.이 "문자 테이블을"가입
이 "문자 테이블을"가입
select t.c.value('@c', 'varchar(30)') code, t.c.value('@v', 'varchar(30)') val from (select convert(xml, '<x c="CODE001" v="Value One" /><x c="CODE002" v="Value Two" />') aXmlCol) z cross apply aXmlCol.nodes('/x') t(c)
-
==============================
7.
select dbo.decode(10>1 ,'yes' ,'no')
첫 번째 함수 인수의 유형과 일치하는 비트 매개 변수에 논리적 표현을 변환하는 데 필요하기 때문에 불행하게도, 즉, 당신이 주위 SQL의 CASE 절을 가지고하지 않습니다
create function decode(@var1 as bit, @var2 as nvarchar(100), @var3 as nvarchar(100)) returns nvarchar(100) begin return case when @var1 = 1 then @var2 else @var3 end; end; select dbo.decode(case when 10 > 1 then 1 else 0 end, 'Yes', 'No');
-
==============================
8.당신의 성별 (남자 또는 여자)와 같은 선택 문이 개 값이있는 경우 내 사례 I에서 장소 첫 번째 예제를 많이 그것을 사용 후 다음 문을 사용합니다 :
당신의 성별 (남자 또는 여자)와 같은 선택 문이 개 값이있는 경우 내 사례 I에서 장소 첫 번째 예제를 많이 그것을 사용 후 다음 문을 사용합니다 :
SELECT CASE Gender WHEN 'Male' THEN 1 ELSE 2 END AS Gender
국적과 같은 하나 개 이상의 조건이있는 경우 다음과 같은 문장으로 사용할 수 있습니다 :
SELECT CASE Nationality WHEN 'AMERICAN' THEN 1 WHEN 'BRITISH' THEN 2 WHEN 'GERMAN' THEN 3 WHEN 'EGYPT' THEN 4 WHEN 'PALESTINE' THEN 5 ELSE 6 END AS Nationality
from https://stackoverflow.com/questions/1559241/decode-function-in-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] NOT이 존재하는 INSERT 값 (0) | 2020.06.08 |
---|---|
[SQL] 어떤 SQL을 선택 기호를 수행 || 평균? (0) | 2020.06.08 |
[SQL] 단일 인용 SQL 서버 2005 텍스트를 삽입하는 방법 (0) | 2020.06.08 |
[SQL] 테이블의 끝에 NULL 값을 정렬 (0) | 2020.06.08 |
[SQL] SQL 서버에서 외부 키를 사용하는 히트 심각한 성능이 있습니까? (0) | 2020.06.08 |