이것은 내 작품입니다.SQL Oracle (group by)
Name Start End
------ -------- --------
Mary 09-04-01 10-04-30
John 08-05-25 11-07-24
Alisa 07-07-07 11-06-28
Mary 06-06-06 12-12-20
John 05-05-05 12-12-20
Alex 04-04-04 11-12-20
Alisa 03-03-03 13-12-20
Mary 09-04-04 13-12-21
John 08-06-06 13-04-30
John 08-06-01 14-04-30
나는 GROUP BY
모든 이름에, 각 사람에 대한 MIN() START
을 얻고 MAX() END
을받을 필요가있다. 그런 다음, START
이 같은 END
의 차이는 :
Name Start End Difference
------- -------- -------- ----------
Mary 06-06-06 13-12-21 MONTHS_BETWEEN(start,end)
John 05-05-05 14-04-30 MONTHS_BETWEEN(start,end)
Alisa 03-03-03 13-12-20 MONTHS_BETWEEN(start,end)
Alex 04-04-04 11-12-20 MONTHS_BETWEEN(start,end)
이 내 쿼리입니다. 나는이 결과를 얻을 수있을 뿐이며, 나는 왜 모든 사람이 GROUP BY를 할 수 없는지 모른다. difference
에서 올바르게 작동하는 것 같습니다. FROM
을 제외합니다.
ERROR at line 1:
ORA-00979: not a GROUP BY expression
tableDate.Start and tableDate.End are calculated columns so i dont know why i've to put them in the GROUP BY clause.
감사합니다 : 나는 GROUP BY
에서 table.Date.Start
및 tableDate.End
을 제거하면
SELECT table.name, MIN(tableDate.Start), MAX(tableDate.end),
Round(MONTHS_BETWEEN(tableDate.end, tableDate.Start),0) as Difference
FROM (....)
GROUP BY table.name,tableDate.Start, tableDate.End
;
, 오라클은 나에게 오류가 주어집니다!
완벽하게 작동합니다. 고마워요! 나는 함수 내에서 계산을한다고 생각하지 않았다. – Thapipo