如果NULL等效,则打开进度?

时间:2017-06-28 16:46:39

标签: sql openedge progress-db

我有以下的select语句,但我收到错误

Msg 7354,Level 16,State 1,Line 393 链接服务器“(null)”的OLE DB提供程序“STREAM”为列“CORP_POSTINGS”提供了无效元数据。精度超过了允许的最大值。

select 
OfficeID, PostDate,
Case when a.OFFICEID in (''17'',''42'',''56'',''50'',''66'',''46'') then 
a.PROVIDERNAME else ''All Providers'' end as Provider, 
CASE WHEN a.JournalName contains ''emwell'' or a.JournalName in (''Insurance 
Refunds'') Then sum(cast(ifnull(a.Amount,0.00) as decimal (12,2))) else 0 
end as ''CORP_POSTINGS''

我尝试了ifNULL到金额并且它没有用。我甚至尝试过ifnull并转换为十进制。非常感谢任何帮助...

这是在OPEN PROGRESS ODBC CONNECTION

中完成的

1 个答案:

答案 0 :(得分:0)

看起来您的SUMCASTIFNULL无序。

首先,您需要SUM您的金额。接下来,您需要CAST它到您的目标数据类型(进程似乎发回不正确的类型)。最后,如果您找到了零记录,那么您将返回NULL,因此您希望将IFNULL归为零。

如果您的a.Amount为非空,则应为IFNULL( CAST( SUM(a.Amount) AS DECIMAL(12,2) ), 0.00)

如果a.Amount可以为空,则应为IFNULL( CAST( SUM( IFNULL(a.Amount, 0.00) ) AS DECIMAL(12,2) ), 0.00)