2012-10-16 34 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