我正在創建一個基於兩個聚合函數的值從表中提取記錄的SQL查詢。這些聚合函數從同一個表中提取數據,但是使用不同的過濾條件。我遇到的問題是SUM的結果比只包含一個SUM函數的結果大得多。我知道我可以使用臨時表創建此查詢,但我只是想知道是否有一個優雅的解決方案只需要一個查詢。使用不同條件的同一表中的一個SQL查詢中的多個聚合函數
我創建了一個簡化版本來演示這個問題。下面是表的結構:
EMPLOYEE TABLE
EMPID
1
2
3
ABSENCE TABLE
EMPID DATE HOURS_ABSENT
1 6/1/2009 3
1 9/1/2009 1
2 3/1/2010 2
這裏是查詢:
SELECT
E.EMPID
,SUM(ATOTAL.HOURS_ABSENT) AS ABSENT_TOTAL
,SUM(AYEAR.HOURS_ABSENT) AS ABSENT_YEAR
FROM
EMPLOYEE E
INNER JOIN ABSENCE ATOTAL ON
ATOTAL.EMPID = E.EMPID
INNER JOIN ABSENCE AYEAR ON
AYEAR.EMPID = E.EMPID
WHERE
AYEAR.DATE > '1/1/2010'
GROUP BY
E.EMPID
HAVING
SUM(ATOTAL.HOURS_ABSENT) > 10
OR SUM(AYEAR.HOURS_ABSENT) > 3
任何有識之士將不勝感激。
這是有點混亂。根據給定的數據,您的預期結果是什麼? – Raja 2010-04-16 16:58:29