2012-10-16 33 views
1

我不能让下面的SQL工作Interbase的: 我得到以下错误:SQL(Interbase的):与聚合函数的字符串的情况

Error at line 1 Attempt to execute an unprepared dynamic SQL statement

SQL:

SELECT CASE 
    WHEN kl='K' THEN (SUM(DB)-SUM(CR)) 
    WHEN kl='L' THEN (SUM(CR)-SUM(DB)) 
    END AS Saldo 
FROM Table1 
GROUP BY KL 

对于定义的Table1这样:

Column name Data type 
------------ ------------ 
KL   varchar(1) 
DB   int 
CR   int 

然而,它工作在SQL fiddle

以下也适用!

SELECT CASE 
    WHEN kl='K' THEN 1 
    WHEN kl='L' THEN 2 
    END as Saldo 
FROM Table1 
Group By KL 
+0

如果你提供的错误 – Diego

+0

@diego添加错误通知+例如,工程 –

+0

DB代码,这将有助于看起来有点可疑我作为一个列名。 Interbase的标识符行情?另外,你发布的小提琴是用于MySQL,而不是Interbase(他们没有列出支持的Firebird的Interbase)。 –

回答

0

找到了!

SELECT Sum(CASE 
     WHEN kl='K' THEN db 
     WHEN kl='L' THEN cr 
     END) 
     -Sum(CASE 
     WHEN kl='K' THEN CR 
     WHEN kl='L' THEN DB 
     END) 

FROM Table1 
Group By KL