개별 직원 세부 사항을 취한 다음 전체 위치 및 총계에 따라 요약 합계를 구하는 쿼리가 있습니다. 첫 번째 선택 문에서 max (column9)를 취해야하지만 노동 조합에서 나는 합계 (column9)를 취할 필요가있다. "데이터 유형 불일치"라는 오류가 발생한다. 되어 다음 쿼리 :plsql에서 동일한 열에 대해 동일한 열의 다른 데이터 유형
SELECT COLUMN1 AS LASTNAME,
COLUMN2 AS FIRSTNAME,
COLUMN3 AS LOCATION,
SUM(COLUMN4) AS ACTIVITYNM1,
SUM(COLUMN5) AS ACTIVITYNM2,
SUM(COLUMN6) AS ACTIVITYNM3,
SUM(COLUMN7) AS ACTIVITYNM4,
SUM(COLUMN8) AS ACTIVITYNM5,
MAX(COLUMN9) AS REG_HRS,
MAX(COLUMN10) AS OT_HRS,
MAX(COLUMN11) AS TOTAL_HRS,
SUM(COLUMN12) AS PRODUCTIVITY_PERCENTAGE,
COLUMN13 AS FULL_LOCATION
FROM TABLE(ACTY_COL(V_STARTDATE,V_ENDDATE))
GROUP BY COLUMN1, COLUMN2, COLUMN3, COLUMN13
UNION
SELECT NULL,
NULL,
CONCAT(SUBSTR(COLUMN3,3,3),' Total') AS LOCATION,
SUM(COLUMN4) AS ACTIVITYNM1,
SUM(COLUMN5) AS ACTIVITYNM2,
SUM(COLUMN6) AS ACTIVITYNM3,
SUM(COLUMN7) AS ACTI,
VITYNM4,
SUM(COLUMN8) AS ACTIVITYNM5,
SUM(COLUMN9) AS REG_HRS,
SUM(COLUMN10) AS OT_HRS,
SUM(COLUMN11) AS TOTAL_HRS,
(SUM(COLUMN12)/COUNT(DISTINCT(COLUMN1))) AS PRODUCTIVITY_PERCENTAGE,
COLUMN13 AS FULL_LOCATION
FROM TABLE(ACTY_COL(V_STARTDATE,V_ENDDATE))
GROUP BY COLUMN3, COLUMN13
====================================== ===================================
안녕하세요. 모든 답변을 주셔서 대단히 감사합니다. 나는 해결책을 얻었다. 나는 두 번째 노동 조합 내부에서 서브 쿼리를 사용한다. 여기에 코드를 붙여 넣습니다.
SELECT
COLUMN1 AS EMPID,
COLUMN2 AS FIRSTNAME,
COLUMN3 AS LASTNAME,
COLUMN4 AS LOCATION,
SUM(COLUMN5) AS ACTIVITYNM1,
SUM(COLUMN6) AS ACTIVITYNM2,
SUM(COLUMN7) AS ACTIVITYNM3,
SUM(COLUMN8) AS ACTIVITYNM4,
SUM(COLUMN9) AS ACTIVITYNM5,
MIN(COLUMN10) AS EVENTDATE,
TO_NUMBER(COLUMN11) AS REG_HRS,
TO_NUMBER(COLUMN12) AS OT_HRS,
TO_NUMBER(COLUMN13) AS TOTAL_HRS,
SUM(COLUMN14) AS PRODUCTIVITY_PERCENTAGE
FROM
TABLE(ACTY_COL(V_STARTDATE,V_ENDDATE))
GROUP BY
COLUMN1,
COLUMN2,
COLUMN3,
COLUMN4,
COLUMN11,
COLUMN12,
COLUMN13
UNION
SELECT
NULL AS EMPID,
NULL AS LASTNAME,
NULL AS FIRSTNAME,
SUBSTR(INNER_REC.LOCATION,2,5) AS LOCATION,
SUM(INNER_REC.ACTIVITYNM1) AS ACTIVITYNM1,
SUM(INNER_REC.ACTIVITYNM2) AS ACTIVITYNM2,
SUM(INNER_REC.ACTIVITYNM3) AS ACTIVITYNM3,
SUM(INNER_REC.ACTIVITYNM4) AS ACTIVITYNM4,
SUM(INNER_REC.ACTIVITYNM5) AS ACTIVITYNM5,
MIN(INNER_REC.EVENTDATE) AS EVENTDATE,
SUM(INNER_REC.REG_HRS) AS REG_HRS,
SUM(INNER_REC.OT_HRS) AS OT_HRS,
SUM(INNER_REC.TOTAL_HRS) AS TOTAL_HRS,
SUM(INNER_REC.PRODUCTIVITY_PERCENTAGE) AS PRODUCTIVITY_PERCENTAGE
FROM
(
SELECT
COLUMN1 AS EMPID,
NULL AS LASTNAME,
NULL AS FIRSTNAME,
COLUMN4 AS LOCATION,
SUM(COLUMN5) AS ACTIVITYNM1,
SUM(COLUMN6) AS ACTIVITYNM2,
SUM(COLUMN7) AS ACTIVITYNM3,
SUM(COLUMN8) AS ACTIVITYNM4,
SUM(COLUMN9) AS ACTIVITYNM5,
MIN(COLUMN10) AS EVENTDATE,
SUM(TO_NUMBER(COLUMN11))/(SELECT COUNT(1) FROM TABLE(ACTY_COL(V_STARTDATE,V_ENDDATE)) AB WHERE AB.COLUMN4 =
CD.COLUMN4 AND AB.COLUMN1 = CD.COLUMN1) AS REG_HRS,
SUM(TO_NUMBER(COLUMN12))/(SELECT COUNT(1) FROM TABLE(ACTY_COL(V_STARTDATE,V_ENDDATE)) AB WHERE AB.COLUMN4 =
CD.COLUMN4 AND AB.COLUMN1 = CD.COLUMN1) AS OT_HRS,
SUM(TO_NUMBER(COLUMN13))/(SELECT COUNT(1) FROM TABLE(ACTY_COL(V_STARTDATE,V_ENDDATE)) AB WHERE AB.COLUMN4 =
CD.COLUMN4 AND AB.COLUMN1 = CD.COLUMN1) AS TOTAL_HRS,
SUM(COLUMN14) AS PRODUCTIVITY_PERCENTAGE
FROM
TABLE(ACTY_COL(V_STARTDATE,V_ENDDATE)) CD
GROUP BY
COLUMN4,
COLUMN1
) INNER_REC
GROUP BY
INNER_REC.LOCATION
[ROLLUP] (http://www.adp-gmbh.ch/ora/sql/group_by/group_by_rollup.html)을 GROUP BY에 추가하면 UNION을 사용할 필요가 없습니다. –
하지만 총 2 개를 가져 가야합니다. 먼저 총계에 따른 요약 총계와 그 이후 보조금 총계. 위 쿼리에 하나 이상의 조합이 있습니다.이 경우 ROLLUP을 사용할 수 있습니까? 미안 해요. 나는 pl SQL에 많은 경험을 가지고 있지 않다 – Remya
뭔가가 코드에 채워져있다 - 첫 번째 쿼리는 13 열을 가지고, 두 번째는 14가있다. –