teradata - 使用 COUNT 和分组时遇到错误 3526
teradata - encountering error 3526 with COUNT and group by
我认为我遇到了关于计数的错误,但我不确定如何解决这个问题。在这种情况下,我们的“SE”table 包含设备不重复的唯一值。在我们的“WO”table 中,EquipmentCode 将重复,因为每个 ID 可以存在多个“CR”。我最初的想法是创建一个计数值,表示设备在我们的“WO”table 中出现的次数,其中包含 where 子句。
SELECT
SE.EquipmentSurfaceAssetBK AS Field,
SE.ParentEquipmentCodeBK AS "Parent",
SE.EquipmentCodeBK AS Equipment,
SE.EquipmentDescription AS Description,
SE.EquipmentClassBK AS "Class",
SE.EquipmentCostCode AS "Cost Code",
SE.EquipmentCriticality AS Criticality,
SE.EquipmentStatus AS Status,
COUNT(WO.WorkOrderEquipmentCodeBK) AS "Corrective Repairs"
FROM IDW_PL_Surface.DIMWorkOrder WO JOIN IDW_PL_Surface.DIMSurfaceEquipment SE
ON WO.WorkOrderEquipmentCodeBK = SE.EquipmentCodeBK
WHERE WO.WorkOrderJobType = 'CR'
AND Status not in ('D')
AND WO.WorkOrderStatus not in ('CANC','REJ')
Group By Field, "Parent", Equipment, Description, "Class", "Cost Code", Criticality, Status, "Corrective Repairs"
从组中删除“纠正维修”列:
SELECT
SE.EquipmentSurfaceAssetBK AS Field,
SE.ParentEquipmentCodeBK AS "Parent",
SE.EquipmentCodeBK AS Equipment,
SE.EquipmentDescription AS Description,
SE.EquipmentClassBK AS "Class",
SE.EquipmentCostCode AS "Cost Code",
SE.EquipmentCriticality AS Criticality,
SE.EquipmentStatus AS Status,
COUNT(WO.WorkOrderEquipmentCodeBK) AS "Corrective Repairs"
FROM IDW_PL_Surface.DIMWorkOrder WO JOIN IDW_PL_Surface.DIMSurfaceEquipment SE
ON WO.WorkOrderEquipmentCodeBK = SE.EquipmentCodeBK
WHERE WO.WorkOrderJobType = 'CR'
AND Status not in ('D')
AND WO.WorkOrderStatus not in ('CANC','REJ')
Group By Field, "Parent", Equipment, Description, "Class", "Cost Code", Criticality, Status
因为当你分组时,它应该只包含你想要基于它们计算聚合函数的列,你不需要包含聚合列(在你的例子中是 count())
我认为我遇到了关于计数的错误,但我不确定如何解决这个问题。在这种情况下,我们的“SE”table 包含设备不重复的唯一值。在我们的“WO”table 中,EquipmentCode 将重复,因为每个 ID 可以存在多个“CR”。我最初的想法是创建一个计数值,表示设备在我们的“WO”table 中出现的次数,其中包含 where 子句。
SELECT
SE.EquipmentSurfaceAssetBK AS Field,
SE.ParentEquipmentCodeBK AS "Parent",
SE.EquipmentCodeBK AS Equipment,
SE.EquipmentDescription AS Description,
SE.EquipmentClassBK AS "Class",
SE.EquipmentCostCode AS "Cost Code",
SE.EquipmentCriticality AS Criticality,
SE.EquipmentStatus AS Status,
COUNT(WO.WorkOrderEquipmentCodeBK) AS "Corrective Repairs"
FROM IDW_PL_Surface.DIMWorkOrder WO JOIN IDW_PL_Surface.DIMSurfaceEquipment SE
ON WO.WorkOrderEquipmentCodeBK = SE.EquipmentCodeBK
WHERE WO.WorkOrderJobType = 'CR'
AND Status not in ('D')
AND WO.WorkOrderStatus not in ('CANC','REJ')
Group By Field, "Parent", Equipment, Description, "Class", "Cost Code", Criticality, Status, "Corrective Repairs"
从组中删除“纠正维修”列:
SELECT
SE.EquipmentSurfaceAssetBK AS Field,
SE.ParentEquipmentCodeBK AS "Parent",
SE.EquipmentCodeBK AS Equipment,
SE.EquipmentDescription AS Description,
SE.EquipmentClassBK AS "Class",
SE.EquipmentCostCode AS "Cost Code",
SE.EquipmentCriticality AS Criticality,
SE.EquipmentStatus AS Status,
COUNT(WO.WorkOrderEquipmentCodeBK) AS "Corrective Repairs"
FROM IDW_PL_Surface.DIMWorkOrder WO JOIN IDW_PL_Surface.DIMSurfaceEquipment SE
ON WO.WorkOrderEquipmentCodeBK = SE.EquipmentCodeBK
WHERE WO.WorkOrderJobType = 'CR'
AND Status not in ('D')
AND WO.WorkOrderStatus not in ('CANC','REJ')
Group By Field, "Parent", Equipment, Description, "Class", "Cost Code", Criticality, Status
因为当你分组时,它应该只包含你想要基于它们计算聚合函数的列,你不需要包含聚合列(在你的例子中是 count())