보고서를 만들려면보기를 만들려는 다음 열이있는 테이블이 있습니다. 특정 클래스의 완료 시간 합계를 가져야합니다. 특정 필터 : 다음 필터를 적용하는 동안합계, 복수 그룹화 필터 함께
| 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 서버 <> mysql. 태그를 수정 하겠지만 지금 보류중인 수정 사항이 있습니다. –
현재 FUS_CLASS_ID에 대해 CLASS_DAY가 같은 행이 두 개있는 경우 현재 명령문에서 고유 CLASS_DAY 열을 고려하지 않으며 가장 최근 날짜 만 추가하지 않습니다. 또한 별표로 시작하는 OUTCOME 컬럼이있는 행만 추가해야합니다. 이것은 MySQL v5.6 용입니다. – Gustavo1478