Oracle SQL:Select 中的 Sum Over Partition returns 错误

Oracle SQL: Sum Over Partition returns error in Select

我有一个更大的 Select 语句,它工作正常,直到我包含以下 returns 下面的错误。
仅使用 Sum 部分也可以,但我只需要在每个 AID 的第一行使用它,这就是我在这里使用行号的原因。

有人能告诉我我做错了什么吗?
问题是 Sum 和 Partition 指的是我在 Select 中加入的两个不同的表吗?

我的SQL(Select的一部分):

, CASE 
    WHEN ROW_NUMBER() OVER (PARTITION BY dp.SHIPPER_ID ORDER BY di.AID) = 1 THEN (SUM(di.SHIPPED_UNITS) OVER (PARTITION BY dp.SHIPPER_ID))
    ELSE '' 
END AS Gesamtmenge

错误信息:

ORA-00932: inconsistent datatypes: expected NUMBER got CHAR

非常感谢您的帮助,
麦克

错误说明了一切。您使用的 '' 本质上是一个字符而不是整数。

, CASE 
    WHEN ROW_NUMBER() OVER (PARTITION BY dp.SHIPPER_ID ORDER BY di.AID) = 1 THEN (SUM(di.SHIPPED_UNITS) OVER (PARTITION BY dp.SHIPPER_ID))
    ELSE NULL 
END AS Gesamtmenge

正如错误消息指出的那样,您不能在 CASE 中混合使用不同的数据类型。例如这是错误的

select case when 1=1 then 2 else '' end from dual

else中使用null或0或将then表达式转换为字符串

由于原始列是整数,所以不能传递字符

, CASE 
  WHEN ROW_NUMBER() OVER (PARTITION BY dp.SHIPPER_ID ORDER BY di.AID) = 1 THEN 
 (SUM(di.SHIPPED_UNITS) OVER (PARTITION BY dp.SHIPPER_ID))
 ELSE NULL
END AS Gesamtmenge