我正在运行一个查询,该查询从多个表中获取数据并使用内部连接获取条件。我希望此查询按单列分组,但当我这样做时,我得到:ORA-00979: not a GROUP BY expression
,错误消息。根据我的理解,这是因为其他表格列不支持此组。
我写这个查询是为了从 iReport 生成报告。例如,我从三个不同的表格详细信息,食物和爱好中获取,我希望按名称组合此结果组...
Name | food | hobby
-------------------------
peter | chips | traveling
peter | burger | tennis
peter | burger | writing
Dave | lamb | game
Dave | kebab | reading
我想要的结果很好:这里我只想获得一次名称和各自的所有值(即使它是重复的)和其他重复的名称行不应该包含任何数据..请帮助我使用这个SQL查询。 。如果 iReport 中有任何选项要执行此操作,请告诉我或sql中的任何其他关键字/内部查询,我在设计表时按选项进行尝试..但它不起作用...提前谢谢
Name | food | hobby
--------------------------------------------------------------
peter | chips | traveling
------ | burger | tennis
------ | burger | writing
Dave | lamb | game
-------| kebab | reading
查询:
SELECT org.Location AS organisation_location, list.listId as list_listid, org.Centre AS org_Centre,
org.Department AS org_Department, org.Position AS org_Position, q.content AS q_content,
q.dueTime AS q_dueTime, a.submitted_date AS a_submitted_date, list.frequency AS list_frequency,
a.comments AS a_comments, a.userid AS a_userid, a.submitted as a_submitted
FROM org INNER JOIN list ON org.id = list.org_id INNER JOIN q ON klist.id = q.list_id INNER JOIN a ON qid = a.q_id
WHERE a.submitted=0 andlist.listid='xyz'
我想通过 list.listid
对相同的内容进行分组答案 0 :(得分:1)
您的查询不包含“名称”,“食物”或“爱好”,所以我有点困惑,但以下查询应该可以帮助您创建自己的目标。
SELECT
CASE WHEN X.VERIFY_COL = 1 THEN X.YOUR_UNIQUE_COL ELSE NULL END AS YOUR_COL_NAME,
* FROM
(SELECT
ROW_NUMBER() OVER (PARTITION BY YOUR_UNIQUE_COL ORDER BY YOUR_UNIQUE_COL) AS VERIFY_COL,
* FROM YOUR_VIEW
) X
您可以按照您希望在查询YOUR_UNIQUE_COL
中只有一次的列对数据进行分区。然后,您可以轻松利用ROW_COUNT()
为所有行的名称设置NULL
ROW_COUNT() > 1
。
请注意它是SQL SERVER解决方案。你使用什么数据库引擎?
答案 1 :(得分:1)
我认为您不需要对数据进行分组,请尝试停用“打印重复值”