我不能在PostgreSQL中使用十进制转换
下一个查询给了我一个错误。我搞不懂。错误显示下一条消息:fl.C为Var,((il.B:decimal-sintaxis error)我不能在PostgreSQL中使用十进制转换,sql,postgresql,Sql,Postgresql,下一个查询给了我一个错误。我搞不懂。错误显示下一条消息:fl.C为Var,((il.B:decimal-sintaxis error) BBB AS ( SELECT t.A ,count(t.B) as B FROM AAA LEFT JOIN PUBLIC.BBB t ON ( AAA.A= t.A ) WHERE t.C= TIMESTAMP:from - INTERVAL '1 DAY'
BBB
AS (
SELECT t.A
,count(t.B) as B
FROM AAA
LEFT JOIN PUBLIC.BBB t ON (
AAA.A= t.A
)
WHERE t.C= TIMESTAMP:from - INTERVAL '1 DAY'
GROUP BY 1
)
,
SELECT t.Id AS Id
,
t.A AS A
,il.B AS B
,fl.C AS C
,il.B - fl.C AS Var
,
((il.B::decimal - fl.C::decimal) / fl.C::decimal) * 100::decimal AS D
,sum(t.G) AS G
,sum(t.H) AS H
FROM AAA t
LEFT JOIN BBB il ON (
il.E = t.id
)
LEFT JOIN CCC fl ON (
fl.F = t.id
)
GROUP BY 1
,2
,3
,4
,5
,6
ORDER BY 1 DESC;
这就像我根本不能使用::十进制转换。如果我删除::十进制转换查询将工作,但返回D的错误值(始终为0)
所有列类型都是整数,除了:from和:to是日期时间
它们可能包含null。什么错误?列类型是什么?如果列已经是数字,为什么转换为十进制?它们是整数?包含null?作为字符串存储的数字,这将是一个设计错误/按列号分组也是一个非常坏的习惯,也不需要使用
100.0
。但即使这样也不需要。如果要避免整数除法,唯一需要的转换是fl.C
。如果更改操作数的顺序,也可以避免这种转换,例如(il.B-fl.C)*100.0/fl.C
@PanagiotisKanavos我想我已经发布了您需要的信息。希望这些信息能够澄清情况时间戳:from
也无效。如果“from”
是一个时间戳,则不需要任何前缀。如果要指定类型,则只需要使用时间戳
前缀constant@a_horse_with_no_name我必须这样做,因为我需要它来从中减去1到