SQL-запрос ниже работал ... Но когда я добавляю поля "FreightCostsPerOrderSplit" (3 новых поля), я получаю сообщение об ошибке ORA-01747, показанное ниже.Соглашения похожи на то, что делалось ранее в коде SQL, и я не был уверен, что может быть причиной этого сообщения об ошибке.
Ошибка в строке 49 ORA-01747: недопустимая спецификация user.table.column, table.column или column
Как я публиковалНа этот вопрос я разобрался с решением.Я решил опубликовать этот ответ для тех, кто может столкнуться с этой же проблемой.
Решение заключалось в замене COUNT(OHH.*)
на COUNT(OHH.FieldName)
в делителе вычисляемых полей.См. Раздел с ответами для комментариев относительно синтаксиса count(*) vs count(column-name)
.
, (SUM(cteLoadFreightAgg.TOTALFREIGHT)/ COUNT(OHH.*)) AS "TotalFreight_SplitPerOrder"
SQL-код (разбит на строке 49 с решением, отправленным в ответе):
/* A list of aggregated freight carrier data grouped by LOAD (no BILLTOCUST)
Pulled from [LOAD_CARRIER] table. Another option is [FRT_LOAD] which include LUMPER
SOURCE: Loads Underutilize Report
*/
cteLoadFreightAgg AS
(
SELECT
LOAD_CARRIER.LOAD_SEQ_CODE AS LoadNumber
, SUM(LOAD_CARRIER.FLAT_FRT + LOAD_CARRIER.FUEL_FRT + LOAD_CARRIER.DROP_FRT + LOAD_CARRIER.MISC_FRT + LOAD_CARRIER.OUT_ROUTE_FRT + LOAD_CARRIER.LAYOVER_FRT) AS TotalFreight
, SUM(LOAD_CARRIER.DROP_FRT + LOAD_CARRIER.MISC_FRT + LOAD_CARRIER.OUT_ROUTE_FRT + LOAD_CARRIER.LAYOVER_FRT) AS AssessorialsFreight
, SUM(LOAD_CARRIER.FLAT_FRT) AS FlatRateFreight
, SUM(LOAD_CARRIER.FUEL_FRT) AS FuelFreight
FROM
LOAD_CARRIER
GROUP BY
LOAD_CARRIER.LOAD_SEQ_CODE
)
SELECT
OHH.BILL_COMP_CODE
, LOAD.DEPART_FROM_WHSE_CODE
, OHH.SHIP_FROM_WHSE
, OHH.ORDER_SEQ_CODE
, OHH.LOAD_SEQ_CODE
, OHH.SHIP_DATE
, CARRIER.NAME AS CarrierName
, OHH.DELIVERY_DATE
, CUST.CUST_CODE || '-' || CUST.CUST_SHIPTO_CODE AS ShiptoCustCode
, CUST.NAME AS ShiptoName
, OHH.BILL_PO_ID
, CUST.CITY
, CUST.STATE_CODE
, LOAD.TALLY_DATE_TIME
, OHH.APPT_DATE
, OHH.APPT_TIME
, OHH.EST_PALLETS
, OHH.EST_GROSS_WGT
, OHH.EST_NET_WGT
, LOAD.CLASS_CODE
, SUM(ODH.WEIGHT_SHIPPED) AS "SUM_ODH_WeightShipped"
-- FreightCostLoad
, cteLoadFreightAgg.TOTALFREIGHT
, cteLoadFreightAgg.FUELFREIGHT
, (cteLoadFreightAgg.TOTALFREIGHT - cteLoadFreightAgg.FUELFREIGHT) AS "OTHERFREIGHT"
-- FreightCostsPerOrderSplit
, (SUM(cteLoadFreightAgg.TOTALFREIGHT)/ COUNT(OHH.*)) AS "TotalFreight_SplitPerOrder"
, (SUM(cteLoadFreightAgg.FUELFREIGHT) / COUNT(OHH.*)) AS "FuelFreight_SplitPerOrder"
, ((SUM(cteLoadFreightAgg.TOTALFREIGHT) - SUM(cteLoadFreightAgg.FUELFREIGHT))/ COUNT(OHH.*)) AS "OtherFreight_SplitPerOrder"
FROM
ROCCO.CARRIER CARRIER
INNER JOIN ROCCO.LOAD_CARRIER LOAD_CARRIER
ON CARRIER.CARRIER_CODE = LOAD_CARRIER.CARRIER_CODE
INNER JOIN ROCCO.ORD_HDR_HST OHH
ON LOAD_CARRIER.LOAD_SEQ_CODE = OHH.LOAD_SEQ_CODE
INNER JOIN ROCCO.ORD_DTL_HST ODH
ON OHH.ORDER_SEQ_CODE = ODH.ORDER_SEQ_CODE
INNER JOIN ROCCO.LOAD LOAD
ON OHH.LOAD_SEQ_CODE = LOAD.LOAD_SEQ_CODE
INNER JOIN ROCCO.CUSTOMER_SHIPTO CUST
ON OHH.CUST_CODE = CUST.CUST_CODE
AND OHH.CUST_SHIPTO_CODE = CUST.CUST_SHIPTO_CODE
INNER JOIN cteLoadFreightAgg
ON LOAD.LOAD_SEQ_CODE = cteLoadFreightAgg.LOADNUMBER
WHERE
-- OHH.SHIP_DATE BETWEEN :paramStartDate AND :paramEndDate
-- AND OHH.STATUS_CODE<>'DL'
-- AND OHH.BILL_COMP_CODE IN (:paramCompany)
-- AND LOAD.DEPART_FROM_WHSE_CODE IN (:paramWarehouse)
-- AND OHH.MASTER_ORDER_NBR IS NULL
-- AND LOAD.CLASS_CODE IN (:paramClassCode)
-- AND CUST.CUST_CODE || '-' || CUST.CUST_SHIPTO_CODE IN (:paramShipto)
-- /*
OHH.SHIP_DATE BETWEEN TO_DATE('10/1/2018', 'MM/DD/YYYY') AND TO_DATE('10/31/2018', 'MM/DD/YYYY')
AND OHH.STATUS_CODE<>'DL'
AND OHH.BILL_COMP_CODE=100
AND OHH.MASTER_ORDER_NBR IS NULL
-- */
GROUP BY
OHH.BILL_COMP_CODE
, LOAD.DEPART_FROM_WHSE_CODE
, OHH.SHIP_FROM_WHSE
, OHH.ORDER_SEQ_CODE
, OHH.LOAD_SEQ_CODE
, OHH.SHIP_DATE
, CARRIER.NAME
, OHH.DELIVERY_DATE
, CUST.CUST_CODE || '-' || CUST.CUST_SHIPTO_CODE
, CUST.NAME
, OHH.BILL_PO_ID
, CUST.CITY
, CUST.STATE_CODE
, LOAD.TALLY_DATE_TIME
, OHH.APPT_DATE
, OHH.APPT_TIME
, OHH.EST_PALLETS
, OHH.EST_GROSS_WGT
, OHH.EST_NET_WGT
, LOAD.CLASS_CODE
, cteLoadFreightAgg.FUELFREIGHT
, cteLoadFreightAgg.TOTALFREIGHT
ORDER BY
OHH.SHIP_DATE
*
Error at line 49
ORA-01747: invalid user.table.column, table.column, or column specification