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之間的關係。 –