比较配置单元中格式不同的这两列

shstlldc  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(311)

我有源表:b\u account.b\u curreny和目标表account.curreny。源表b\u account.b\u curreny curreny curreny format为“c”和“u”,目标表account.currency format为“cad”和“usd”
我使用case将'c'和'u'格式更改为'cad'和'usd',并比较这两列。我使用下面的查询,这个查询仍然比较目标列acc.curreny(cad)和源列b.b\u curreny(c)'
选择计数()计数,
当b\u curreny='c'然后'cad'时的情况
当b\u curreny='u'然后'usd'
else空结束
从帐户帐户
加入b\u account b on acc.account\u number=b.account\u number
以及会计货币
如果使用以下查询,则会收到错误消息invalid table alias or column reference'souce\u currency':
选择计数(
)计数,
当b\u curreny='c'然后'cad'时的情况
当b\u curreny='u'然后'usd'
else空结束assource\u curreny
从帐户帐户
加入b\u account b on acc.account\u number=b.account\u number
货币来源
你能帮我用不同的格式比较一下这两列吗?

jvidinwx

jvidinwx1#

source\u curreny列是在query的select子句中创建的,并在同一查询中使用。因此,这个错误。您可以使用外部查询来引用此别名。
如果您对不匹配计数感兴趣,可以尝试下面的查询(我没有测试过)

SELECT sum (case WHEN b.b_curreny ='C' and acc.CURRENCY!='CAD' THEN 1 
             WHEN b_curreny ='U' and  acc.CURRENCY!='USD' THEN 1 
             ELSE 0
            END) as mismatch_count
FROM ACCOUNT acc
join b_ACCOUNT b  
on acc.account_NUMBER=b.account_NUMBER;

相关问题