Считать группу с помощью внутреннего соединения - PullRequest
0 голосов
/ 06 января 2020

У меня есть две связанные таблицы в моей базе данных Oracle: EXPENSES и EXPENSETYPE.

Я хочу показать все регистры, сгруппированные по типу расходов, то есть:

| Number  | Description  | Value    | Registers
| 99      | Car Rent     | $200     | 8
| 65      | Food         | $500     | 22

.. .

Я пытался:

SELECT
    ET.NUMBER,
    ET.DESCRYPTION,
    E.VALUE,
    E.DATE
    COUNT(E.ID) AS REGISTERS
  FROM EXPENSES E
    INNER JOIN EXPENSETYPE ET ON E.EXPENSE_ID= ET.ID
  GROUP BY ET.NUMBER
  ORDER BY 
    E.DATE, ET.NUMBER

Но я получаю ORA-00979.

1 Ответ

0 голосов
/ 06 января 2020

Вам необходимо включить все неагрегированные столбцы в GROUP BY. И тогда вам нужно что-то сделать с датой. Возможно, вы намереваетесь:

SELECT ET.NUMBER, E.DESCRYPTION, E.VALUE,
       COUNT(E.ID) AS REGISTERS
FROM EXPENSES E INNER JOIN
     EXPENSETYPE ET
     ON E.EXPENSE_ID= ET.ID
GROUP BY ET.NUMBER, E.DESCRYPTION, E.VALUE
ORDER BY MIN(E.DATE), ET.NUMBER;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...