我有源表:b_ACCOUNT.b_curreny和目标表account.currency。 来源表b_ACCOUNT.b_curreny货币格式是' c'和' U'目标表account.currency格式为'CAD'和'USD'
我用案例改变' c'和' U'格式化为' CAD'和' USD'并比较这两列。我使用以下查询,此查询仍将目标列acc.CURRENCY(CAD)与源列b.b_curreny(c)'
进行比较SELECT count(*)count,
情况下 当b_curreny =' C'那么' CAD'
当b_curreny =' U'那么' USD'
ELSE NULL END
FROM ACCOUNT acc
在acc.account_NUMBER = b.account_NUMBER
上加入b_ACCOUNT b和acc.CURRENCY<> b.b_curreny
如果我使用以下查询,则会收到错误消息无效的表别名或列引用' souce_currency':
SELECT count(*)count,
情况下 当b_curreny =' C'那么' CAD'
当b_curreny =' U'那么' USD'
ELSE NULL END assource_curreny
FROM ACCOUNT acc
在acc.account_NUMBER = b.account_NUMBER
上加入b_ACCOUNT b和acc.CURRENCY<> source_curreny
你能帮我用不同的格式比较这两列吗?
答案 0 :(得分:0)
列 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;