Dom*_*nic 28 sql sql-server oracle sql-server-2005
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')
Run Code Online (Sandbox Code Playgroud)
以上是Oracle查询; 如何在SQL Server 2005中使用DECODE()函数?
And*_*rew 26
如果我正确理解了这个问题,你需要相当于解码但在T-SQL中
Select YourFieldAliasName =
CASE PC_SL_LDGR_CODE
WHEN '02' THEN 'DR'
ELSE 'CR'
END
Run Code Online (Sandbox Code Playgroud)
Dan*_*der 14
只是为了完整性(因为没有其他人发布最明显的答案):
甲骨文:
DECODE(PC_SL_LDGR_CODE, '02', 'DR', 'CR')
Run Code Online (Sandbox Code Playgroud)
MSSQL:
IIF(PC_SL_LDGR_CODE='02', 'DR', 'CR')
Run Code Online (Sandbox Code Playgroud)
坏消息:
DECODE超过4个参数将导致丑陋的IIF级联