我有一个更大的Select
语句可以正常工作,直到我包含以下内容返回以下错误
仅使用Sum
部分也可以,但我只需要每个AID的第一行,这就是我在这里使用行号的原因。
有人能告诉我这里做错了什么吗? 问题可能是Sum和Partition指的是我在Select中加入的两个不同的表吗?
我的SQL(选择的一部分):
, 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
非常感谢您的任何帮助,
麦克
答案 0 :(得分:1)
错误说全部。您使用的是, 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
,它本质上是一个char而不是int。
<data android:scheme="http"
android:host="example.org"
android:pathPrefix="/app"/>
答案 1 :(得分:1)
由于原始列是整数,因此无法传递字符
, 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
答案 2 :(得分:0)
正如错误消息所指出的那样,您无法在CASE中混合使用不同的数据类型。例如,这是错误的
select case when 1=1 then 2 else '' end from dual
在null
中使用else
或0或将then
表达式转换为字符串