将一列与oracle中同一行的另一列进行比较

时间:2014-09-18 05:47:12

标签: oracle

我有一个表Table1,有三列Acc,Bal1,Bal2。我想编写一个查询来获取所有账户(ACC)和余额(BAL1和BAL2之间的比例更高)。

任何人都可以帮我吗?

2 个答案:

答案 0 :(得分:0)

您只需使用GREATEST即可在所有帐户的两列中获得最佳余额。

SQL> WITH DATA AS(
  2  SELECT 1 ACC, 100 BAL_1, 200 BAL_2 FROM DUAL UNION ALL
  3  SELECT 1 ACC, 300 BAL_1, 200 BAL_2 FROM DUAL UNION ALL
  4  SELECT 1 ACC, 50.7 BAL_1, 49.8 BAL_2 FROM DUAL UNION ALL
  5  SELECT 1 ACC, 0.5 BAL_1, 0.7 BAL_2 FROM DUAL)
  6  SELECT ACC, GREATEST(BAL_1, BAL_2) BAL FROM DATA
  7  /

       ACC        BAL
---------- ----------
         1        200
         1        300
         1       50.7
         1         .7
SQL>

答案 1 :(得分:0)

这是一个示例数据和查询的输出

从acc中选择*;

   ACC       BAL1       BAL2

     1        100        200
     2        200        100
     3        123        444
     4        464        111

以及获取所需输出的查询

选择acc,最大(bal1,bal2)为"更大的平衡"来自acc;

   ACC      greater balance

     1                 200
     2                 200
     3                 444
     4                 464