【发布时间】:2016-10-26 02:39:17
【问题描述】:
我有一个工作查询如下:
SELECT DISTINCT col1, col2,
CASE
WHEN COUNT(DISTINCT col3_typeID) OVER (PARTITION BY col1) = 1
THEN col3_typeID <-- this is what interests me
WHEN COUNT(DISTINCT col3_typeID) OVER (PARTITION BY col1) > 1
THEN COUNT(DISTINCT col3_typeID) OVER (PARTITION BY col1)
END
COUNT(col4) OVER (PARTITION BY col1)
FROM table
-- joins
-- other conditions
我计算了一些东西,如果是COUNT() = 1,那么我返回一个ID,而不是其中的一些ID。理想情况下,我想返回 ID 的 CHAR 值。如果我尝试用CHAR 类型的列替换上面的标记行,我会得到
ORA-00932: inconsistent datatypes: expected CHAR got NUMBER
我也试过 DECODE() 为:
THEN DECODE(col3_typeID, 1 , 'type1'
2, 'type2' )
但我自然会遇到同样的错误,因为这是基本的数据类型限制。
有解决办法吗?
【问题讨论】: