具有内部联接的红移SQL子查询
我正在使用AWS红移SQL。我想内部连接一个子查询,其中包含GROUPBY和内部连接。当我做一个外部连接时;我得到一个列不存在的错误 查询:具有内部联接的红移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
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子句中。