我有以下的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
中完成的答案 0 :(得分:0)
看起来您的SUM
,CAST
和IFNULL
无序。
首先,您需要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)
。