【发布时间】:2018-12-10 08:18:17
【问题描述】:
我想在 MEDICINE_NAME 列的下面查询中使用 Group by,但遇到错误,请任何人帮助我如何使用它。
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;
错误
ORA-00979: 不是 GROUP BY 表达式 00979. 00000 - “不是 GROUP BY 表达式” *原因:
*行动: 行错误:1 列:8
问候 索班
【问题讨论】:
-
您按药物名称分组,但选择了许多其他列,它们不是聚合。这没有多大意义。很高兴编辑您的问题,添加一些示例数据,并在此处解释您要执行的操作。
-
您通常按您选择的列进行分组,除了那些作为设置函数的参数的列。
-
今日提示:切换到现代、明确的
JOIN语法!更容易编写(没有错误),更容易阅读和维护,如果需要更容易转换为外连接。 -
更多答案请参见here
-
嗨@TimBiegeleisen,感谢您的快速回复,我是编写复杂查询的新手,我想根据medicine_name 提取数据,以便可以集体显示同名药物,可以请帮帮我,我该怎么做?