0
我想创建一个查询,它将在两个单独的列中提供两个单独的COUNT。计算应用程序数量并核准应用程序计数。我希望在一段时间内显示每个月的这些计数。像这样:多个GROUP BY与子查询
date applications approvals
January 20 3
February 25 1
March 20 4
April 10 2
当使用子查询,使用 “GROUP BY MONTH(APPL_CREATE_DT)” 我分组主查询。但是,这个问题的问题是,它只能正确分组第一列,而下一列包含每个月的相同计数。如果我将相同的GROUP BY添加到其他子查询部分,则会出现1242错误。
有关如何解决这个问题的任何想法都会有所帮助。我已经看到过类似的其他问题,但是他们并没有太依赖其他解决方案的条款。
SELECT
COUNT(DISTINCT APPL_ID) AS Applications,
(SELECT COUNT(DISTINCT APPL_ID)
FROM APPL_APP
JOIN APPU_APP_USER ON APPL_ID = APPU_APPL_ID
LEFT JOIN APPD_APP_DECISION ON APPD_APPL_ID = APPL_ID
WHERE APPD_STATUS = 'LENDER_APPROVED'
AND APPU_CUR_STATE = 'TX'
AND APPL_CREATE_DT >= '2013-01-01 00:00:00'
AND APPL_CREATE_DT <= '2014-01-31 23:59:59'
GROUP BY MONTH(APPL_CREATE_DT)) AS Approvals
FROM APPU_APP_USER
JOIN APPL_APP ON APPL_ID = APPU_APPL_ID
AND APPL_CREATE_DT >= '2013-01-01 00:00:00'
AND APPL_CREATE_DT <= '2014-01-31 23:59:59'
AND APPU_CUR_STATE = 'TX'
GROUP BY MONTH(APPL_CREATE_DT);
在您的子查询中,只选择MONTH()与外部查询的MONTH()匹配的行:即您在 –
上分组的那个行仍然获得相同的错误。我曾经查找过像MONTH(outerTable.APPL_CREATE_DATE)= MONTH(inner_table.APPL_CREATE_DATE)之类的东西,但我不知道将它放在哪里才能使其工作。 – user2356890
问这些问题的一个好方法是创建一个SqlFiddle并允许人们为你更改它。看看这个例子:http://sqlfiddle.com/#!9/1e85d/5 另外,如果你可以重新将你的查询重新定义为count(*),你或许可以采用不同的方式,但这取决于基数App,AppUser和AppDecision之间的关系。 –