在配置单元中比较这两个具有不同格式的列
Compare this two columns with different format in hive
我有源 table:b_ACCOUNT.b_curreny 和目标 table account.currency。
源 table b_ACCOUNT.b_curreny 货币格式为 'c' 和 'U' 目标 table account.currency 格式为 'CAD' 和 'USD'
我使用 case 将 'c' 和 'U' 格式更改为 'CAD' 和 'USD' 并比较这两列。我使用以下查询,并且此查询仍将目标列 acc.CURRENCY (CAD) 与源列 b.b_curreny(c)'
进行比较
SELECT 计数(*) 计数 ,
案例
当 b_curreny ='C' 然后 'CAD'
当 b_curreny ='U' 然后 'USD'
否则为空结束
来自帐户帐户
在 acc.account_NUMBER=b.account_NUMBER
上加入 b_ACCOUNT b
和acc.CURRENCY <> b.b_curreny
如果我使用以下查询,我会收到错误消息 Invalid table alias or column reference 'souce_currency':
SELECT 计数(*) 计数 ,
案例
当 b_curreny ='C' 然后 'CAD'
当 b_curreny ='U' 然后 'USD'
否则为空结束assource_curreny
来自帐户帐户
在 acc.account_NUMBER=b.account_NUMBER
上加入 b_ACCOUNT b
和acc.CURRENCY <> source_curreny
你能帮我比较一下这两列不同的格式吗?
列 - source_curreny 在查询的 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;
我有源 table:b_ACCOUNT.b_curreny 和目标 table account.currency。 源 table b_ACCOUNT.b_curreny 货币格式为 'c' 和 'U' 目标 table account.currency 格式为 'CAD' 和 'USD'
我使用 case 将 'c' 和 'U' 格式更改为 'CAD' 和 'USD' 并比较这两列。我使用以下查询,并且此查询仍将目标列 acc.CURRENCY (CAD) 与源列 b.b_curreny(c)'
进行比较SELECT 计数(*) 计数 ,
案例 当 b_curreny ='C' 然后 'CAD'
当 b_curreny ='U' 然后 'USD'
否则为空结束
来自帐户帐户
在 acc.account_NUMBER=b.account_NUMBER
上加入 b_ACCOUNT b和acc.CURRENCY <> b.b_curreny
如果我使用以下查询,我会收到错误消息 Invalid table alias or column reference 'souce_currency':
SELECT 计数(*) 计数 ,
案例 当 b_curreny ='C' 然后 'CAD'
当 b_curreny ='U' 然后 'USD'
否则为空结束assource_curreny
来自帐户帐户
在 acc.account_NUMBER=b.account_NUMBER
上加入 b_ACCOUNT b和acc.CURRENCY <> source_curreny
你能帮我比较一下这两列不同的格式吗?
列 - source_curreny 在查询的 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;