Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL:分区总和在Select中返回错误_Sql_Oracle_Select_Case_Partition - Fatal编程技术网

Oracle SQL:分区总和在Select中返回错误

Oracle SQL:分区总和在Select中返回错误,sql,oracle,select,case,partition,Sql,Oracle,Select,Case,Partition,我有一个更大的Select语句,它工作正常,直到我包含以下返回以下错误的语句。 仅使用Sum部分也可以,但我只需要在每个辅助的第一行使用它,这就是我在这里使用行号的原因 有人能告诉我我做错了什么吗? 问题是Sum和Partition引用的是我在Select中加入的两个不同的表吗 我的SQL(选择的一部分): , CASE WHEN ROW_NUMBER() OVER (PARTITION BY dp.SHIPPER_ID ORDER BY di.AID) = 1 THEN (SUM(d

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

有人能告诉我我做错了什么吗?
问题是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
错误消息:

, 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
非常感谢您的帮助,

迈克

错误说明一切。您使用的是
'
,它本质上是一个字符,而不是int

, 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

错误说明一切。您使用的是
'
,它本质上是一个字符,而不是int

, 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

正如错误消息所指出的,在这种情况下,您不能混合使用不同的数据类型。例如,这是错误的

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

使用
null
else
中的0,或将
然后
表达式转换为字符串

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

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

使用
null
else
中的0,或将
然后
表达式转换为字符串

,因为原始列是整数,所以不能传递字符

, 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 
  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

shipped\u units
type number吗?@RLOG:是的,它是type number。请使用null而不是“”。@MiloBellano:非常感谢-非常好!如果您将其作为答复发布,我将接受此回复。:)很乐意帮忙!:)如果你想接受,我已经把答案贴出来了。谢谢你,伙计!
shipped\u units
type number吗?@RLOG:是的,它是type number。请使用null而不是“”。@MiloBellano:非常感谢-非常好!如果您将其作为答复发布,我将接受此回复。:)很乐意帮忙!:)如果你想接受,我已经把答案贴出来了。谢谢你,伙计!谢谢!它起作用了。米洛也发了这个,很好。我错过了2分钟:)非常感谢!它起作用了。米洛也发了这个,很好。我错过了2分钟:)