快速背景 - 我需要找出通过我们公司实验室按案例类型和月份分组的案例的终止率。到目前为止,我想出了这个:在使用Oracle的子查询中出现奇怪的'GROUP BY'错误
SELECT BPI.TYPE,
EXTRACT(MONTH FROM CS.RECEIVED_DATE) MONTH,
COUNT(*) termed_cases
FROM CELL_SOURCE cs
JOIN BASIC_PATHOLOGY_INFO bpi ON CS.CELL_SOURCE_ID = BPI.CELL_SOURCE_ID
JOIN RECENT_CELL_SOURCE_STATUS rcss ON CS.CELL_SOURCE_ID = RCSS.CELL_SOURCE_ID
WHERE type IS NOT NULL
AND CS.RECEIVED_DATE > to_date('03/01/2011', 'MM/DD/YYYY/')
AND RCSS.STATUS like 'Term%'
GROUP BY BPI.TYPE, EXTRACT(MONTH FROM CS.RECEIVED_DATE)
ORDER BY month, type
这找到所有已被称为,很容易的情况。但是,当我想要查找费率时,我遇到了一些问题。我试图用一个子查询捉每类案件的总量不管它的地位,因为这样的:
COUNT(*)/(SELECT COUNT(*)
FROM CELL_SOURCE cs_1
JOIN BASIC_PATHOLOGY_INFO bpi_1 ON CS_1.CELL_SOURCE_ID = BPI_1.CELL_SOURCE_ID
WHERE BPI_1.TYPE = BPI.TYPE
AND EXTRACT(month from CS_1.RECEIVED_DATE) = EXTRACT(MONTH FROM CS.RECEIVED_DATE)) termed_cases
然而,这引发ORA-00979: not a GROUP BY expression
错误,并从子查询凸显BPI.TYPE
。
任何人都知道我的错误实际上可能是什么?此外,分析函数在这里比集合函数更好吗?
您需要按子查询中的BPI_1.TYPE进行分组 – reggie 2011-05-26 14:47:42
select子句中的“BPI.TYPE”是否真的应该是“BPI.TUMOR_TYPE”,就像您在组中所做的一样? – Craig 2011-05-26 14:49:01
对不起,只是输入。肿瘤类型完全不同 - 弗洛伊德错误 – ryebr3ad 2011-05-26 14:54:07