我有一个很长的PostgreSQL查询,下面是它的一部分,它给出了错误。
如果' TOTAL'以下给出的查询效果很好找到特定customer_key和结果列返回的订单" 1"但如果' TOTAL'订单未找到。
select customer_key, order_key,
sum( case when order_key in (
select order_key from tbl_dim_orders where order_name = 'TOTAL'
) then 1
else 0
end
) = 0 as result
from fact_sales group by 1,2
having
sum( case when order_key in (
select order_key from tbl_dim_orders where order_name = 'TOTAL'
) then 1
else 0
end
) = 0
实际上我正在努力找出哪个客户没有' TOTAL'订单及以下是样品订单表:
order_key|customer_key|order_name
1| 2|'Toy'
2|2|'Shirt'
3|2|'TOTAL'
4|1|'Toy'
5|1|'TV'
从上表中我需要客户ID,但没有总数。
任何人都可以帮我这个
答案 0 :(得分:0)
只需聚合客户并使用HAVING
子句断言客户没有TOTAL
订单:
SELECT customer_key
FROM tbl_dim_orders
GROUP BY customer_key
HAVING SUM(CASE WHEN order_name = 'TOTAL' THEN 1 ELSE 0 END) = 0;
您似乎知道GROUP BY
可能是必要的,以及HAVING
条款,但也许您不知道如何将它们链接在一起。