Нужно использовать Group by в SQL по арифметическому столбцу - PullRequest
0 голосов
/ 02 июля 2018

Я хочу использовать группирование по приведенному ниже запросу в столбце MEDICINE_NAME, но при возникновении ошибки, кто-нибудь, пожалуйста, помогите мне, как я могу его использовать.

SELECT m.doc_date "Date of Purchase",
         t.cost_unit "Purchase On",
         t.price_unit "Sold On",
         t.price_unit - t.cost_unit "Margin",
         CONCAT (
            ROUND ( ( (t.price_unit - t.cost_unit) * 100 / (t.cost_unit + 1)),
                   2),
            '%')
            "Profit",
         med.medicine_name,
         med.manufacture,
         v.vendor_name
    FROM rrmaster m,
         rrtran t,
         medicine med,
         vendor v
   WHERE     m.doc_no = t.doc_no
         AND m.doc_type = t.doc_type
         AND m.storecode = t.storecode
         AND med.medicine_code = t.id_no
         AND m.doc_date LIKE '%17'
         AND m.source = v.code
GROUP BY med.medicine_name;

ERROR

ORA-00979: не выражение GROUP BY 00979. 00000 - «не выражение GROUP BY» * Причина:
* Действие: Ошибка в строке: 1 столбец: 8

С уважением Soban

1 Ответ

0 голосов
/ 02 июля 2018

Пожалуйста, попробуйте ниже, когда агрегатные функции , все неагрегированные столбцы должны быть включены в предложение GROUP BY

SELECT doc_date "Date of Purchase",
       cost_unit "Purchase On",
       price_unit "Sold On",
       price_unit - cost_unit "Margin",
       profit,
       medicine_name,
       manufacture,
       vendor_name
  FROM (  SELECT m.doc_date,
                 t.cost_unit,
                 t.price_unit,
                 t.price_unit,
                 t.cost_unit,
                 CONCAT (
                    ROUND (
                       ( (t.price_unit - t.cost_unit) * 100 / (t.cost_unit + 1)),
                       2),
                    '%')
                    "Profit",
                 med.medicine_name,
                 med.manufacture,
                 v.vendor_name
            FROM rrmaster m,
                 rrtran t,
                 medicine med,
                 vendor v
           WHERE     m.doc_no = t.doc_no
                 AND m.doc_type = t.doc_type
                 AND m.storecode = t.storecode
                 AND med.medicine_code = t.id_no
                 AND m.doc_date LIKE '%17'
                 AND m.source = v.code
        GROUP BY m.doc_date,
                 t.cost_unit,
                 t.price_unit,
                 t.price_unit,
                 t.cost_unit,
                 med.medicine_name,
                 med.manufacture,
                 v.vendor_name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...