select impala 的 case 语句中的语句
select statement inside case statement for impala
我需要消除案例中的硬编码值,并开发了一个查找 table 来获取这些值。
查找 table 看起来像:
serial_no code description type
1 J Jol CENTRE_TYPE
3 C Cols CENTRE_TYPE
4 R Rud CENTRE_TYPE
2 A TCD CENTRE_TYPE
我有以下 impala 代码:
SELECT `prtc`,
CASE WHEN LEFT(prtc,1) = 'C' THEN (SELECT DESCRIPTION FROM dev.lookup_table WHERE CODE='C' AND TYPE='CENTRE_TYPE')
WHEN LEFT(prtc,1) = 'A' THEN (SELECT DESCRIPTION FROM dev.lookup_table WHERE CODE='A' AND TYPE='CENTRE_TYPE')
WHEN LEFT(prtc,1) = 'R' THEN (SELECT DESCRIPTION FROM dev.lookup_table WHERE CODE='R' AND TYPE='CENTRE_TYPE')
WHEN LEFT(prtc,1) = 'J' THEN (SELECT DESCRIPTION FROM dev.lookup_table WHERE CODE='J' AND TYPE='CENTRE_TYPE')
END AS CENTRE_TYPE
FROM dev.`tablename`
我收到一个错误 "AnalysisException: Could not resolve table reference: 'dev.lookup_table'"
使用连接:
SELECT t.prtc,
l.DESCRIPTION as CENTRE_TYPE
FROM dev.`tablename` t
left outer join dev.lookup_table l on LEFT(t.prtc,1)= l.CODE and l.TYPE='CENTRE_TYPE'
我需要消除案例中的硬编码值,并开发了一个查找 table 来获取这些值。
查找 table 看起来像:
serial_no code description type
1 J Jol CENTRE_TYPE
3 C Cols CENTRE_TYPE
4 R Rud CENTRE_TYPE
2 A TCD CENTRE_TYPE
我有以下 impala 代码:
SELECT `prtc`,
CASE WHEN LEFT(prtc,1) = 'C' THEN (SELECT DESCRIPTION FROM dev.lookup_table WHERE CODE='C' AND TYPE='CENTRE_TYPE')
WHEN LEFT(prtc,1) = 'A' THEN (SELECT DESCRIPTION FROM dev.lookup_table WHERE CODE='A' AND TYPE='CENTRE_TYPE')
WHEN LEFT(prtc,1) = 'R' THEN (SELECT DESCRIPTION FROM dev.lookup_table WHERE CODE='R' AND TYPE='CENTRE_TYPE')
WHEN LEFT(prtc,1) = 'J' THEN (SELECT DESCRIPTION FROM dev.lookup_table WHERE CODE='J' AND TYPE='CENTRE_TYPE')
END AS CENTRE_TYPE
FROM dev.`tablename`
我收到一个错误 "AnalysisException: Could not resolve table reference: 'dev.lookup_table'"
使用连接:
SELECT t.prtc,
l.DESCRIPTION as CENTRE_TYPE
FROM dev.`tablename` t
left outer join dev.lookup_table l on LEFT(t.prtc,1)= l.CODE and l.TYPE='CENTRE_TYPE'