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')
上面是一个Oracle查询;如何在SQL Server2005中使用DECODE()函数?
发布于 2009-10-13 10:04:29
您可以在SQL中使用'CASE .. WHEN .. THEN .. ELSE .. END‘语法。
发布于 2009-10-13 10:04:29
如果我没理解错的话,您希望在T-SQL中使用等价物decode
Select YourFieldAliasName =
CASE PC_SL_LDGR_CODE
WHEN '02' THEN 'DR'
ELSE 'CR'
END
发布于 2017-08-14 23:32:59
只是为了完整(因为没有其他人发布最明显的答案):
Oracle:
DECODE(PC_SL_LDGR_CODE, '02', 'DR', 'CR')
MSSQL (2012+):
IIF(PC_SL_LDGR_CODE='02', 'DR', 'CR')
坏消息是:
具有4个以上参数的DECODE
将导致丑陋的IIF
级联
https://stackoverflow.com/questions/1559241
复制相似问题