需要在SQL中的算术列上使用GROUPBY
我想在下面的查询中使用Group by,但遇到一个错误,请任何人帮助我如何使用它需要在SQL中的算术列上使用GROUPBY,sql,oracle,group-by,Sql,Oracle,Group By,我想在下面的查询中使用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 -
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:不是表达式的组
97900000-不是表达式的分组
*原因:
*行动:
第1行第8列出错
问候
Soban请尝试以下操作,使用时,所有非聚合列必须包含在GROUP BY子句中
您是按药物名称分组的,但选择了许多其他列,这些列不是聚合。那没有多大意义。很高兴编辑您的问题,添加一些示例数据,并解释您在此处尝试执行的操作。您通常按所选的列进行分组,但设置函数的参数除外。今天的提示:切换到现代的显式联接语法!更容易编写而不出错,更容易阅读和维护,并且在需要时更容易转换为外部连接。请参阅许多答案。Shi@TimBiegeleisen,感谢您的快速响应,我是编写复杂查询的新手,我想根据药物名称来提取数据,以便可以集中显示同名药物,你能帮我吗?我该怎么做?
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)