我在将此DECODE修改为CASE语句时遇到了一些麻烦。
DECODE(DECODE(pa.postCode_pt1 || ' ' || pa.postCode_pt2,'L9 3DF', 'ZZ99 9ZZ', 'CV23 8AP', 'ZZ99 9ZZ', 'WR11 8TZ', 'ZZ99 9ZZ', postCode_pt1 || ' ' || pa.postCode_pt2),'ZZ99 9ZZ','',pa.address_l1)
迄今为止我提出的最好的东西是不合逻辑的......因为它是DECODE中的一个DECODE,这让我感到困惑。
这是我到目前为止所做的:
CASE WHEN pa.postCode_pt1 + ' ' + pa.postCode_pt2='ZZ99 9ZZ' (
CASE WHEN pa.postCode_pt1 + ' ' + pa.postCode_pt2='L9 3DF' THEN 'ZZ99 9ZZ'
WHEN pa.postCode_pt1 + ' ' + pa.postCode_pt2='CV23 8AP' THEN 'ZZ99 9ZZ'
WHEN pa.postCode_pt1 + ' ' + pa.postCode_pt2='WR11 8TZ' THEN 'ZZ99 9ZZ'
ELSE pa.postCode_pt1 + ' ' + pa.postCode_pt2) THEN ''
ELSE pa.address_l1
END AS Address_Line_1
答案 0 :(得分:2)
您可以尝试此查询。
select case when case when pa.postCode_pt1 + ' ' + pa.postCode_pt2='L9 3DF'then 'ZZ99 ZZ' else 'WR11 8TZ' end = 'ZZ99 9ZZ' then ' ' else pa.address_l1 end new_value from dual
答案 1 :(得分:2)
未经测试,但您应该明白这一点:
case when
(case
when pa.postCode_pt1 || ' ' || pa.postCode_pt2 in ('L9 3DF','CV23 8AP','WR11 8TZ')
then 'ZZ99 9ZZ'
else postCode_pt1 || ' ' || pa.postCode_pt2 end)
= 'ZZ99 9ZZ' then '' else pa.address_l1 end
嵌套case语句的语法:
case
when A=B then
(case
when C=D then 1
when E=F then 2
else 3
end)
when G=H then
(case
when I=J then 4
when K=L then 5
else 6
end)
else 7
end
我认为这也应该没有括号,我添加()
只是为了更好的定位。
CASE
的一般结构是([]
是可选的):
CASE WHEN condition THEN result [WHEN...][ELSE result] END
通过将CASE
或condition
替换为其他result
结构,您可以多次嵌套CASE
。