根据特定条件在Oracle SQL数据库中添加值

时间:2014-02-28 19:57:55

标签: java sql oracle

我对遇到的问题感到非常难过,但我很难找到答案。

我有两个表,一个名为LEDGER,另一个名为WORKER。 LEDGER包含提供人员姓名,项目,日期和总金额的交易。 WORKER仅包含人名。

我正在尝试通过LEDGER和WORKER编写一个查询(使用equi-join),并查找WORKER在LEDGER中进行购买的实例,并输出结果。这个基本部分很简单,我已经为它编写了一个查询:

SELECT WORKER.NAME,
LEDGER.ITEM,
LEDGER.AMOUNT
FROM LEDGER, WORKER
WHERE WORKER.NAME = LEDGER.PERSON
  AND LEDGER.ACTION = 'BOUGHT'
GROUP BY WORKER.NAME, LEDGER.ITEM, LEDGER.AMOUNT
ORDER BY WORKER.NAME ASC;

我正在努力的部分是出现所有项目的SUM而不是符合这些条件的列表事务。例如,我的输出是:

NAME               ITEM      AMOUNT
ANDREW DYE         COLT      9
ANDREW DYE         COLT      10
ANDREW DYE         HAY       5
ANDREW DYE         HAY       20
ANDREW DYE         LINE      0.75
ANDREW DYE         PIG       2
HELEN BRANDT       BEEF      7.5
PETER LAWSON       BEEF      6.5
VICTORIA LYNN      BEEF      6.9

而不是这个,我只想要在一行中合并所有项目金额的总金额,如下所示:

NAME               TOTAL_AMOUNT
ANDREW DYE         46.75
HELEN BRANDT       7.5
PETER LAWSON       6.5
VICTORIA LYNN      6.9

我希望这个问题有道理,非常感谢任何答案。

1 个答案:

答案 0 :(得分:0)

SELECT WORKER.NAME,
MAX(LEDGER.ITEM),
SUM(LEDGER.AMOUNT)
FROM LEDGER, WORKER
WHERE WORKER.NAME = LEDGER.PERSON
  AND LEDGER.ACTION = 'BOUGHT'
GROUP BY WORKER.NAME
ORDER BY WORKER.NAME ASC;