具有内部联接的红移SQL子查询

具有内部联接的红移SQL子查询,sql,join,subquery,amazon-redshift,Sql,Join,Subquery,Amazon Redshift,我正在使用AWS红移SQL。我想内部连接一个子查询,其中包含GROUPBY和内部连接。当我做一个外部连接时;我得到一个列不存在的错误 查询: SELECT si.package_weight FROM "packageproduct" ub "clearpathpin" cp ON ub.cpipr_number = cp.pin_number INNER JOIN "clearpathpin" cp ON ub.cpipr_number = cp.pin_num

我正在使用AWS红移SQL。我想内部连接一个子查询,其中包含GROUPBY和内部连接。当我做一个外部连接时;我得到一个列不存在的错误

查询:

SELECT      si.package_weight
FROM        "packageproduct" ub "clearpathpin"  cp ON ub.cpipr_number = cp.pin_number
  INNER JOIN "clearpathpin"  cp ON ub.cpipr_number = cp.pin_number
  INNER JOIN (
    SELECT sf."AWB", SUM(up."weight") AS package_weight
    FROM "productweight" up ON up."product_id" = sf."item_id"
    GROUP BY sf."AWB"
    HAVING sf."AWB" IS NOT NULL
    ) AS si ON si.item_id = ub.order_item_id 
LIMIT 100;
结果:

ERROR: column si.item_id does not exist

这只是因为
列si.item\u id不存在

在表的select语句中包含
item\u id


而且它应该可以工作。

这个查询有很多问题

对于子查询,您有一个
ON
语句,但它没有加入:

FROM "productweight" up ON up."product_id" = sf."item_id"
加入此子查询的结果时,您正在引用子查询中不存在的字段:

    SELECT sf."AWB", SUM(up."weight") AS package_weight
     ...
    ) AS si ON si.item_id = ub.order_item_id
您应该将子查询想象为创建一个新的、单独的、暂时存在的表。外部查询然后将该临时表连接到查询的其余部分。因此,任何未显式生成子查询的内容都将不可用于外部查询


我建议在开发时,首先自己编写和运行子查询。只有在它返回您期望的结果(没有错误、适当的列等)之后,您才能将其复制/粘贴为子查询,并开始开发主查询。

编辑您的问题,并将查询作为文本而不是图像包含。
从“productweight”开始。
缺少一个
JOIN
未正确复制什么是“sf”。??@Almouby:如果下面的答案符合您的要求,请接受。我正在尝试汇总空运账单包中的权重。空运账单包可能有多个项目。这是我不包括item_id的最初原因,因为我不希望它包含在group by子句中。