個々の従業員の詳細を取得し、その場所と最終的に総計に基づいて要約した問合せがあります。最初の選択文では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
====================================== ===============================
こんにちは、ありがとうございました。私は解決策を得ました。私は2番目の組合の中でサブクエリを使用します。私はここにコードを貼り付けています。
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つの合計を取る必要があります。最初の合計は、場所に応じて、その後、助成金の合計。上記のクエリに1つ以上の結合があります。この場合、ROLLUPを使用できますか?ごめんなさい。私はpl SQLの多くの経験を持っていない – Remya
何かがコードで詰まっている - 最初のクエリは13列、2番目は14です。 –