我有一個表格,其中包含以下列,我試圖創建一個視圖以創建報告,我需要獲取特定類的完成小時數的總和,但與一個特定的過濾器:通過過濾器獲得總計,多個分組
| PK_CLASS_DAYS_ID | FK_MAIN_ID | FK_CLASS_ID | CLASS_DAY | OUTCOME | CLASS_DATE | HOURS |
|------------------|------------|-------------|-----------|---------|------------|-------|
| 1 | 27452 | 137 | 1 | *15 | 2015-11-15 | 8 |
| 2 | 27452 | 137 | 2 | *15 | 2015-11-16 | 8 |
| 3 | 27452 | 137 | 4 | *15 | 2015-11-18 | 8 |
| 4 | 27452 | 137 | 5 | BS15 | 2015-11-19 | 8 |
| 5 | 27452 | 2 | 1 | *16 | 2001-01-01 | 8 |
| 6 | 27452 | 48 | 1 | *16 | 2016-01-12 | 8 |
| 7 | 27452 | 48 | 2 | *16 | 2016-02-27 | 4 |
| 8 | 27452 | 2 | 1 | *17 | 2017-07-01 | 8 |
| 9 | 27452 | 137 | 1 | *16 | 2016-07-16 | 8 |
我需要找到的完成了每一個類(FK_CLASS_ID
)爲每一個學生在我的表時間的總和(目前我把它過濾ID 27452出於測試目的),同時,應用以下濾波器(FK_CLASS_ID
):
- (1)
CLASS_DAY
必須是不同的 - (2)
CLASS_OUTCOME
必須以 「*」 - (3)
CLASS_DATE
必須是最新的,同時仍然具有先前的兩個條件開始。結果視圖應該如下:
| PK_CLASS_DAYS_ID | FK_MAIN_ID | FK_CLASS_ID | Hrs |
|------------------|-------------|--------------|------|
| 1 | 27452 | 137 | 32 |
| 2 | 27452 | 2 | 8 |
| 3 | 27452 | 48 | 12 |
我已經試圖做到這一點得到了最遠的,是下面的select語句:
SELECT
t1.CLASS,
SUM(class_hours) as Hrs,
GROUP_CONCAT('D',classes_days.class_day) as DaysList,
main.FULLNAME
FROM
classes t1
INNER JOIN classes_days ON classes_days.FK_CLASS_ID = t1.CLASS_ID
INNER JOIN main ON main.PK_MAIN_ID = classes_days.FK_MAIN_ID
WHERE
main.PK_MAIN_ID = 27452
GROUP BY FK_CLASS_ID
ORDER BY CLASS
你能解釋你有什麼問題嗎? – Mureinik
標記時應該小心。 sql server <> mysql。我會編輯標籤,但現在有一個掛起的編輯。 –
我的當前語句不考慮不同的CLASS_DAY列,也不會只添加最近的日期,如果對於相同的FK_CLASS_ID有兩行具有相同的CLASS_DAY。此外,它只能添加具有以星號開頭的列OUTCOME的行。這是針對MySQL v5.6的。 – Gustavo1478